2010-11-22 12 views
1
gesendet wurden

Ich verwende eine einfache E-Mail-Absenderklasse, die System.Net.Mail verwendet. Ich muss meine Anwendung aktualisieren, damit verschiedene Benutzer E-Mail über sie senden können (unter Verwendung des gleichen SMTP-Kontos), aber die "Von" -Adresse sollte von dem Benutzer sein, der verursacht, dass sie gesendet wird. Ich habe versucht, die From Eigenschaft von MailMessage zu setzen, und das Senden von der Adresse in den Erbauer von MailMessage aber Nase von denen arbeitete. Ich bin sicher, dass ich etwas Einfaches verpasse oder nicht verstehe, wie die Mail-API funktioniert. Kann jemand helfen?Einstellung einer anderen Absenderadresse für E-Mails, die über Google Mail mit C#

Hier meine MailSender-Klasse, die im Grunde die MailMessage, NetworkCredential und SmtpClient umschließt, um eine einfache Mail-Sende-Schnittstelle bereitzustellen.

class MailSender 
{ 
    private NetworkCredential credential; 
    private String SenderAddress; 
    private SmtpClient client; 

    public MailSender(String ServerURL, String account, String password, String FromAddress = null, int port = -1, bool UseSSL = true) 
    { 
     if (port > 0) 
     { 
      client = new SmtpClient(ServerURL, port); 
     } 
     else 
     { 
      client = new SmtpClient(ServerURL); 
     } 
     credential = new NetworkCredential(account, password); 
     client.UseDefaultCredentials = false; 
     client.EnableSsl = UseSSL; 
     client.Credentials = credential; 

     if (FromAddress != null) 
     { 
      SenderAddress = FromAddress; 
     } 
     else 
     { 
      SenderAddress = account; 
     } 
    } 

    public bool SendMessage(String to, String subject, String body) 
    { 
     try 
     { 
      MailMessage message = new MailMessage(SenderAddress, to, subject, body); 
      message.From = new MailAddress(SenderAddress, "tester"); 

      message.IsBodyHtml = true; 
      client.Send(message); 
     } 
     catch 
     { 
      return false; 
     } 
     return true; 
    } 
} 
+1

IIRC, GMail ändert es entsprechend Ihren Einstellungen des Kontos. – leppie

+2

Es kann sehr gut sein, dass Google Ihnen nicht erlaubt, E-Mails von anderen Accounts als den Anmeldeinformationen zu senden, die Sie zur Authentifizierung übergeben. –

+0

@leppie und @Mikael Svenson: versuchte es auch mit unserem Büro smtp. Gleiche Ergebnisse. – MAK

Antwort

3

Ich habe gerade die Antwort durch Testen mit einem anderen SMTP-Server gefunden. Dies wird tatsächlich dadurch verursacht, dass GMail keine andere Adresse zulässt. Dies funktioniert gut mit anderen SMTP-Servern.

Dank leppie, Mikael Svenson und Smirkingman für ihre Vorschläge.

+0

Es ist wahrscheinlich, dass Ihre E-Mails als Spam blockiert werden, wenn Sie die Absenderadresse fälschen/einen Server verwenden, der für diese Domäne nicht zulässig ist. – CodesInChaos

+0

@CodeInChaos: Nein. Alle E-Mails wurden gesendet und haben ihren Weg zu meinem Posteingang (und anderen Posteingängen) in Ordnung. Sie hatten nur die "von" -Adresse die gleiche wie das GMail-Konto, das verwendet wurde, um sie anstelle der Adresse zu senden, die ich wollte. Durch den Wechsel zu einem anderen SMTP-Server wurde das Problem behoben. – MAK

+0

Natürlich waren die Mails, bei denen Google die Absenderadresse geändert hatte, in Ordnung, da SMTP-Server und E-Mail übereinstimmen. Aber wenn Sie einen anderen SMTP-Server verwenden, der nicht funktioniert, wird möglicherweise der Absender aus der Mail gefiltert. Insbesondere, wenn die Domäne der E-Mail im Feld "Von" 'SPF' verwendet. – CodesInChaos

1

Google Mail lässt keine andere Adresse zu. Es kann Ihnen helfen, Sie können die Wiedergabe auf diese Weise ändern:

mail.ReplyTo = neue MailAddress ("[email protected]");

Verwandte Themen