0

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

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,它应该由该邮件发送。

谢谢

4

2 回答 2

0

以下是我使用 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);
于 2016-11-29T21:41:46.940 回答
0

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

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

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

于 2016-11-29T21:05:01.007 回答