使用不同的地址发送邮件

时间:2016-11-29 20:53:01

标签: c# smtp mailsettings

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

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,则应该通过该邮件发送。

谢谢

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分: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);