2016-11-29 61 views
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="[email protected]"> 
    <network host="smtp.gmail.com" enableSsl="true" port="587" userName="[email protected]" 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,则应该可以通过邮寄!

感谢

+1

然后将地址更改为类似于NoReply @无论您在代码中的哪个地方从'mailSettings'中读取? – MethodMan

回答

0

你试图从多个从地址发送邮件或你想能够使用同样的方法,用不同的地址?

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

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

0

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

string subject = "Email subject here." 
    string msg = "Email body here."   

    string fromEmail = ConfigurationManager.AppSettings["fromEmail"]; 

    if (fromEmail == null) 
     fromEmail = "[email protected]" 

    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); 
相关问题