利用System.Net.Mail写了个发送邮件功能,用公司的邮件服务器和某政府的邮件服务器可以发送成功,用tom,qq,163,gmail不成功。大家帮忙看看,谢谢!
1 public static void sendEmail()
2 {
3 MailMessage mail = null;
4 try
5 {
6 string strFrom = System.Configuration.ConfigurationManager.AppSettings["SendEmailAddress"].ToString();
7
8 string strPassword = System.Configuration.ConfigurationManager.AppSettings["SendEmailPassword"].ToString();
9 string strTo = System.Configuration.ConfigurationManager.AppSettings["ReceiveEmailAddress"].ToString();
10 string strPort = System.Configuration.ConfigurationManager.AppSettings["Port"].ToString();
11 string strSmtpAddress = System.Configuration.ConfigurationManager.AppSettings["SmtpServiceAddress"].ToString();
12 string strUser = strFrom.Substring(0, strFrom.IndexOf("@"));
13 string[] strToList = strTo.Split(';');
14 string strSendContent = GetMailContent();
15 if (strSendContent.Length <=0) return;
16 mail = new MailMessage();
17 mail.From = new MailAddress(strFrom);
18
19 for (int i = 0; i < strToList.Length; i++)
20 {
21 mail.To.Add(strToList[i]);
22 }
23
24 mail.Subject = "Exchange Detail";
25 mail.Body = strSendContent;
26 mail.BodyEncoding = Encoding.UTF8;
27 mail.IsBodyHtml = false;
28
29
30
31 SmtpClient smtp = new SmtpClient(strSmtpAddress);
32 if (strPort != "")
33 {
34 smtp.Port = int.Parse(strPort);
35 }
36 smtp.UseDefaultCredentials = true;
37 smtp.Credentials = new NetworkCredential(strUser, strPassword);
38 smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
39 smtp.Timeout = 500000;
40 smtp.EnableSsl = true;
41 smtp.Send(mail);
42
43 }
44 catch (Exception ex)
45 {
46 throw ex;
47 }
48 }
为啥不成功?错误信息?
代码好像没有什么问题。可能是配置信息不对吧。
比如你的smtp服务器写成了stmp.163.com 。有的可以发送就说明代码没有问题。可能是硬件环境、网络、或者配置信息方面的问题。注意一下吧。
过滤了。
他们不让你这么干
从2006年11月16日起,网易免费邮件系统(即:网易163/126新注册的邮箱用户)的POP3及SMTP服务将暂停开通不能开通pop3和smtp服务。
你可以选择其他邮箱服务器的smtp 或pop3服务
以前注册的你拿来试下肯定可以,我以前也碰过这种问题
我用新注册的也可以发送
不过我遇到的问题是公司网络的缘故
用公司服务器可以,用其它的就不可以了
家里自己电脑试试
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Net.Mail;
using System.IO;
using System.Net;
namespace SendEmail
{
class SendEmailBySMTP
{
/// <summary>
/// 利用SMTP发送邮件
/// </summary>
/// <param name="fromName">发件人名称</param>
/// <param name="fromAddress">发件人邮箱地址</param>
/// <param name="toAddressList">收件人邮箱地址集合</param>
/// <param name="subject">邮件主题</param>
/// <param name="body">邮件正文</param>
/// <param name="attachList">邮件附件集合,没有附件可为null(附件的文件地址为绝对路径)</param>
/// <param name="loginName">用于发送邮件的邮箱的登录名</param>
/// <param name="loginPwd">用于发送邮件的邮箱的登录密码</param>
/// <param name="mh">用户发送邮件的邮箱的SMTP服务器(MailHost类中的一个属性)</param>
public static void SendEMail(string fromName, string fromAddress, List<string> toAddressList, string subject, string body, List<string> attachList, string loginName, string loginPwd,string mailHost)
{
MailMessage mail = new MailMessage();//实例化一封邮件
mail.From = new MailAddress(fromAddress, fromName);//设置发件人名称和发件人邮箱地址
foreach (string str in toAddressList)
{
mail.To.Add(str);//遍历添加收信人邮箱地址
}
mail.Subject = subject;//设置邮件主题
mail.Body = body;//设置邮件正文
mail.BodyEncoding = Encoding.UTF8;//设置正文编码方式
mail.IsBodyHtml = true;//设置正文是否以html格式发送
if (attachList != null && attachList.Count > 0 && attachList != null)//判断是否存在附件
{
foreach (string str in attachList)//遍历附件集合
{
if (str != null && str != "" && File.Exists(str))//如果绝对路径不为空,且该路径下的文件存在
{
mail.Attachments.Add(new Attachment(str));//为该邮件添加一个附件
}
}
}
SmtpClient smtp = new SmtpClient();//实例化一个用于发送邮件的SMTP客户端
smtp.Host = mailHost;//设置SMTP服务器地址(用于发送邮件的邮箱的SMTP服务器地址)
smtp.Credentials = new NetworkCredential(loginName, loginPwd);//用于发送邮件的邮箱的登录名和密码
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;//设置该邮件通过网络方式发送到SMTP服务器
smtp.Send(mail);//发送
}
}
}
发件箱不要用网易的,网易一直在反外挂、反垃圾邮件等方面有比较高的水平。虽然你不是发的垃圾邮件,但是你用程序可以群发垃圾邮件,所以网易就比较。。。
这个问题最后怎么解决的