请帮看下这段发送Email的代码那里有问题
public bool SendEmail(string from, string to, string subject, string body)
{
try
{
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
msg.From = new System.Net.Mail.MailAddress(from);
msg.To.Add(to);
msg.Subject = subject;
msg.Body = body;
msg.BodyEncoding = System.Text.Encoding.GetEncoding("GB2312");
msg.Priority = System.Net.Mail.MailPriority.High;
System.Net.Mail.SmtpClient cliect = new System.Net.Mail.SmtpClient("smtp.exmail.qq.com",465);
cliect.Credentials = new System.Net.NetworkCredential("*@*.com", "**********");//登陆的邮箱名和密码
cliect.Send(msg);
return true;
}
catch (Exception ex)
{
System.Log.LogHelper.WriteError(ex.Message, ex);
return false;
}
}
以上代码中的邮箱和密码都是正确的,是在腾讯企业邮箱中注册的。但发送邮件时显示:System.Net.Mail.SmtpException: 操作已超时。
错误行是:cliect.Send(msg);
请各位帮忙看下是什么问题,谢谢 --------------------编程问答-------------------- 由于在用代理,那么就有可能是代理设置的问题。
或你可以用Outlook 之类的软件发发看,如果也发不出去,那肯定是网络问题了, 如果能发出去,那就要检查防火墙设置了。 --------------------编程问答--------------------
--------------------编程问答-------------------- lz 如果是测试的话 就用,如果是自己的网站建议还是自己买个邮箱,一般买空间都有送邮箱容量。
添加命名空间
using System.Net.Mail;//添加邮件提醒
using System.Net;
/// <summary>
/// 简单的邮件发送
/// </summary>
/// <param name="fromMail">发送人邮箱</param>
/// <param name="toMail">收件人邮箱</param>
/// <param name="subJect">标题</param>
/// <param name="body">邮件内容</param>
/// <param name="userName">发件人邮箱名(@之前的名称)</param>
/// <param name="passWord">发送人邮箱密码</param>
/// <param name="smtpHost">发送人邮箱的smtp服务器地址(如果发件人邮箱是网易的就是smtp.163.com ,腾讯的是:smtp.qq.com)</param>
private void SendMail(string fromMail, string toMail, string subJect, string body, string userName,string passWord, string smtpHost)
{
//设置邮件信息 发件人地址、收件人地址、标题、邮件内容
MailMessage mail = new MailMessage(fromMail, toMail, subJect, body);
mail.ReplyTo = new MailAddress(fromMail);
//设置邮件主题格式
mail.BodyEncoding = System.Text.Encoding.UTF8;
//设置邮件主体格式是否为 html 格式
mail.IsBodyHtml = true;
//邮件优先级别
mail.Priority = MailPriority.High;
//设置发送邮箱的smtp服务器或安全端口
SmtpClient client = new SmtpClient(smtpHost);
//是否请求一起发送
client.UseDefaultCredentials = true;
//验证邮件服务器的身份
NetworkCredential work = new System.Net.NetworkCredential(userName, passWord);
client.Credentials = work;
//设置邮件发送格式
client.DeliveryMethod = SmtpDeliveryMethod.Network;
//安全连接设置
client.EnableSsl = false;
//一定要为false 或者去掉这句 !不然报服务器不支持安全连接 也就是客户端没有开通SSL加密 所以以后都不要管!
try
{
client.Send(mail);
Response.Write("发送成功");
}
catch (Exception ex)
{
Response.Write(ex.Message + " 请联系管理员。");
}
}
用过qq和163做过测试,发现如果频繁发送邮件会被视为发送垃圾邮件,被禁止发送邮件,
如果是线上项目出现这种情况就是用户收不到“激活邮箱地址”了。 --------------------编程问答--------------------
这个比较全面
如果是用163,请求,126这样的邮箱,发送邮件过于频繁会导致账号被短时间锁定。还是用自己买的邮箱比较好
补充:.NET技术 , ASP.NET