我已经有了邮件服务,但我需要使用不同的地址,因为许多服务都使用此服务。 现在,我有这个代码,工作正常:
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,则应该通过该邮件发送。
谢谢
答案 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);