【问题标题】:Send mail using different from address使用不同地址发送邮件
【发布时间】:2017-04-14 00:31:01
【问题描述】:

我已经有一个邮件服务,但我需要使用不同于地址的服务,因为这个服务被许多服务使用。 现在,我有这段代码,它工作正常:

public static bool SendMail(Mail mail)
{
    var smtp = new SmtpClient();
    var credential = (NetworkCredential) smtp.Credentials;
    var mailMessage = new MailMessage
    {
        From = new MailAddress(credential.UserName, mail.DisplayName),
        Subject = mail.Subject,
        Body = mail.Body,
        IsBodyHtml = true
    };
    mailMessage.To.Add(new MailAddress(mail.To));
    if (!string.IsNullOrEmpty(mail.TemplatePath))
        mailMessage = embedImages(mailMessage, mail);
    smtp.Send(mailMessage);
    return true;
}

> And the web.config:

<mailSettings>
  <smtp from="mail@gmail.com">
    <network host="smtp.gmail.com" enableSsl="true" port="587" userName="mail@gmail.com" password="123456" />
  </smtp>
</mailSettings>

> The Mail parameter, is an object:

public class Mail
{
    public string Subject { get; set; }
    public string Body { get; set; }
    public string To { get; set; }
    public string TemplatePath { get; set; }
    public string DisplayName { get; set; }
    public string From { get; set; }
}

因此,默认情况下,它应该使用 mailSettings,但是,如果属性 mail.From != null,它应该由该邮件发送。

谢谢

【问题讨论】:

  • 然后将发件人地址更改为 NoReply@Whatever 之类的地址,以及您从mailSettings 读取的代码中的什么位置?

标签: c# smtp mailsettings


【解决方案1】:

您是在尝试从多个发件人地址发送消息,还是希望能够对不同的发件人地址使用相同的方法?

如果您希望能够在不同的时间点以不同的地址重用此方法,您可以将方法中的凭据作为参数传入。然后,您将能够根据参数提供的凭据设置 smtp。

我没有看到您正在阅读您设置的邮件设置的任何地方。所以我看不到你是如何配置你的 smtp 的。

【讨论】:

    【解决方案2】:

    以下是我使用 SmtpClient 发送警报电子邮件的方法。我正在使用 ConfigurationManager.AppSettings,但同样的想法适用于您使用的任何类型的配置文件:尝试获取“来自”电子邮件,如果它为 null,则使用默认值。

        string subject = "Email subject here."
        string msg = "Email body here."        
    
        string fromEmail = ConfigurationManager.AppSettings["fromEmail"];
    
        if (fromEmail == null)
            fromEmail = "default.address@gmail.com"
    
        string emailServer = ConfigurationManager.AppSettings["emailServer"];
        int emailServerPort = int.Parse(ConfigurationManager.AppSettings["emailServerPort"]);
        string toEmail; //email recipients         
    
         SmtpClient client = new SmtpClient(emailServer, emailServerPort);
         MailMessage mail = new MailMessage(fromEmail, toEmail, subject, msg);
         client.Send(mail);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-13
      • 2014-08-03
      • 2012-06-26
      • 1970-01-01
      • 2016-05-22
      • 2016-10-18
      • 2018-01-08
      • 2013-09-10
      相关资源
      最近更新 更多