attached is a patch.

Jeff

On Sat, 2003-01-04 at 17:30, Jeffrey Stedfast wrote:
> On Sat, 2003-01-04 at 16:37, Bill Hartwell wrote:
> > On Sat, 2003-01-04 at 14:10, Jeffrey Stedfast wrote:
> > > what message was the reply to? maybe you can try reproducing the
> > > problem? and/or maybe I can take a look to see if anything stands out
> > > that may have caused the problem?
> > > 
> > > Jeff
> > > 
> > > On Sat, 2003-01-04 at 16:11, Bill Hartwell wrote:
> > > > Now the question comes of...how did Evolution queue a message with no
> > > > recipients? For that matter, how did it lose the recipients when it was
> > > > nothing more than a reply to a message on the list, which should have
> > > > automatically brought the addresses over from the message it was a reply
> > > > to?
> > 
> > The subject was "Built-in spam filtering?" and the message number was
> [EMAIL PROTECTED]
> 
> thanks
> 
> > 
> > I figure if you still have it in your message folders and can pull it
> > up, it'll save a little bandwidth - and reduce the risk of something
> > getting changed in transit.
> 
> yep, I still got it...
> 
> > 
> > A possible solution that comes to my mind is that maybe the address got
> > garbled or lost if it was one of those I trimmed down by deleting the
> > ccs and copying the address I wanted to send it to from the Cc: field to
> > the To: field. Since I have the mailing lists in my address book, they
> > don't show up as addresses in the message editing display - instead,
> > they show up with the IDs they have in my address book. Would cut/paste
> > from one field to another break the link to the address book so that the
> > ID is dereferenced?
> 
> it seems that it does. I just added "evolution users"
> <[EMAIL PROTECTED]> to my contacts database and then did a Reply-All
> to the message and then trimmed out the To: address (Not Zed) and then
> copied the "evolution users" string that represented the
> [EMAIL PROTECTED] address in the Cc: field and pasted it into the To:
> field and then deleted the Cc: field and hit Send, and you are right -
> the addressbook is not properly resolving the "evolution users" string
> into [EMAIL PROTECTED] and so feeds the mailer an empty address
> string for the To: field.
> 
> The code that checks to make sure there are valid recipients simply
> checks that there are EDestination structures (which there are, but the
> EDestination structure representing the string "evolution users" does
> not have an address to go with it).
> 
> I think I can probably modify the mailer to be more thorough when
> checking that the message has recipients when you try to send (to
> protect against this sort of thing).
> 
> Jeff
-- 
Jeffrey Stedfast
Evolution Hacker - Ximian, Inc.
[EMAIL PROTECTED]  - www.ximian.com
Index: camel/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/camel/ChangeLog,v
retrieving revision 1.1681.2.5
diff -u -r1.1681.2.5 ChangeLog
--- camel/ChangeLog	16 Dec 2002 00:49:36 -0000	1.1681.2.5
+++ camel/ChangeLog	4 Jan 2003 23:04:30 -0000
@@ -1,3 +1,10 @@
+2003-01-04  Jeffrey Stedfast  <[EMAIL PROTECTED]>
+
+	* providers/smtp/camel-smtp-transport.c (smtp_send_to): Instead of
+	checking recipients != NULL, check that camel_address_length
+	(recipients) != 0 since it is illegal for recipients to be NULL
+	(camel_transport_send_to already checks this).
+
 2002-12-15  Jeffrey Stedfast  <[EMAIL PROTECTED]>
 
 	* camel-multipart-signed.c (camel_multipart_signed_verify): Don't
Index: camel/providers/smtp/camel-smtp-transport.c
===================================================================
RCS file: /cvs/gnome/evolution/camel/providers/smtp/camel-smtp-transport.c,v
retrieving revision 1.124
diff -u -r1.124 camel-smtp-transport.c
--- camel/providers/smtp/camel-smtp-transport.c	7 Oct 2002 18:13:53 -0000	1.124
+++ camel/providers/smtp/camel-smtp-transport.c	4 Jan 2003 23:04:31 -0000
@@ -698,14 +698,14 @@
 		return FALSE;
 	}
 	
-	if (!recipients) {
+	len = camel_address_length (recipients);
+	if (len == 0) {
 		camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
 				      _("Cannot send message: no recipients defined."));
 		camel_operation_end (NULL);
 		return FALSE;
 	}
 	
-	len = camel_address_length (recipients);
 	cia = CAMEL_INTERNET_ADDRESS (recipients);
 	for (i = 0; i < len; i++) {
 		if (!camel_internet_address_get (cia, i, NULL, &addr)) {
Index: mail/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/mail/ChangeLog,v
retrieving revision 1.2444.2.8
diff -u -r1.2444.2.8 ChangeLog
--- mail/ChangeLog	3 Dec 2002 16:05:29 -0000	1.2444.2.8
+++ mail/ChangeLog	4 Jan 2003 23:04:39 -0000
@@ -1,3 +1,13 @@
+2003-01-04  Jeffrey Stedfast  <[EMAIL PROTECTED]>
+
+	* mail-callbacks.c (composer_get_message): Use
+	e_destination_get_email() instead of e_destination_get_address()
+	when checking that we have a list of valid recipients to send the
+	message to because get_email() returns the addr-spec portion of
+	the address, which is what we care about. if that doesn't exist,
+	then the address is useless. This does all we can do mailer-side
+	for the recent "SMTP Problem" thread.
+
 2002-12-02  Jeffrey Stedfast  <[EMAIL PROTECTED]>
 
 	* mail-callbacks.c (guess_me_from_accounts): Use the same logic as
Index: mail/mail-callbacks.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-callbacks.c,v
retrieving revision 1.399.2.1
diff -u -r1.399.2.1 mail-callbacks.c
--- mail/mail-callbacks.c	3 Dec 2002 16:05:50 -0000	1.399.2.1
+++ mail/mail-callbacks.c	4 Jan 2003 23:04:40 -0000
@@ -481,7 +481,7 @@
 	/* see which ones are visible/present, etc */
 	if (recipients) {
 		for (i = 0; recipients[i] != NULL; i++) {
-			const char *addr = e_destination_get_address (recipients[i]);
+			const char *addr = e_destination_get_email (recipients[i]);
 			
 			if (addr && addr[0]) {
 				num++;
@@ -498,7 +498,7 @@
 	recipients_bcc = e_msg_composer_get_bcc (composer);
 	if (recipients_bcc) {
 		for (i = 0; recipients_bcc[i] != NULL; i++) {
-			const char *addr = e_destination_get_address (recipients_bcc[i]);
+			const char *addr = e_destination_get_email (recipients_bcc[i]);
 			
 			if (addr && addr[0])
 				num_bcc++;

Reply via email to