以前作的實現發送郵件的功能,基於System.net.mail,在本地測試是能夠發送郵件的,發佈到服務器上發送不了郵件,後來發現STMP默認使用25端口收發郵件,服務器封掉25了端口,致使發送郵件失敗。服務器
後來改用了587端口發送電子郵件。測試
public static bool SendEmail587(string email, string validateCode)
{
bool result = true;
try
{
string eMailSmtpClient = CommFunction.GetAppSetting("EMailSmtpClient"); //郵箱服務地址
string eMailAccount = CommFunction.GetAppSetting("EMailAccount");//郵箱帳號
string eMailPassword = CommFunction.GetAppSetting("EMailPassword");//郵箱密碼
string eMailName = CommFunction.GetAppSetting("EMailName");
string eMailSubject = CommFunction.GetAppSetting("EMailSubjectValidateCode");
string eMailBodyChinese = CommFunction.GetAppSetting("eMailBodyValidateCode_Chinese");
string eMailBodyEnglish = CommFunction.GetAppSetting("eMailBodyValidateCode_English");
MailMessage msg = new MailMessage();
msg.To.Add(email);
msg.From = new MailAddress(eMailAccount, eMailName, Encoding.UTF8);
msg.Subject = eMailSubject;
msg.SubjectEncoding = System.Text.Encoding.UTF8;
msg.Body = string.Format(string.Format("<p>{0}</p><p>{1}</p>", eMailBodyChinese, eMailBodyEnglish), validateCode); ;
msg.BodyEncoding = System.Text.Encoding.UTF8;
msg.IsBodyHtml = true;
SmtpClient client = new SmtpClient();
client.Credentials = new System.Net.NetworkCredential(eMailAccount, eMailPassword);
client.Port = 587;
client.Host = eMailSmtpClient;
client.EnableSsl = false;
client.Send(msg);
msg.Dispose();
client.Dispose();
}
catch (Exception ex)
{
HttpRequestResult.fResultCode = HttpStatusCode.BadRequest;
HttpRequestResult.fResultMsg = ex.Message;
result = false;
}
return result;
}.net