您好我想配置SMTP邮件设置并从C#发送邮件。
我正在使用表单并在数据库中保存SMTP设置。
无论何时我想发送邮件,我都会使用以下功能。
private void _MSendMail(string _pToMailId, string _pBody, string _pMailSubject = "Test Mail")
{
string _SMTPHOST = Value Come From Database;
int _SMTPPORT = Value Come From Database;
bool _ENABLESSL = Value Come From Database;
string _MAILID = Value Come From Database;
string _USERNAME = Value Come From Database;
string _PASSWORD = Value Come From Database;
using (var message = new System.Net.Mail.MailMessage())
{
message.To.Add(_pToMailId);
message.Subject = _pMailSubject;
message.From = new System.Net.Mail.MailAddress(_MAILID);
message.Body = _pBody;
using (var smtp = new System.Net.Mail.SmtpClient())
{
smtp.Host = "smtp." + _SMTPHOST + ".com";
smtp.Port = _SMTPPORT;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new System.Net.NetworkCredential(_USERNAME, _PASSWORD);
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtp.EnableSsl = _ENABLESSL;
try
{
smtp.Send(message);
}
catch (Exception e) { }
}
}
}
我的问题是:这个功能正确还是做了一些改变??? 我用Gmail测试了它的工作原理。我需要您对其他邮件提供商的建议,相同的功能将起作用或需要进行任何其他更改。
答案 0 :(得分:4)
不,这不正确。首先,您不能假设所有SMTP服务器都是“smtp.example.com”形式。那么“example.net”呢?那么“mail.example.com”呢?
我建议您的数据库存储完整的SMTP主机地址。不要对该值进行任何计算。
答案 1 :(得分:2)
您需要考虑许多事项:
代码只向单个人发送邮件。而是使用 IList _pToMailId并按如下方式循环:
foreach (var to in _pToMailId)
{
message .To.Add(to);
}
您可以分别为CC和BCC重复此操作。