首页 新闻 搜索 专区 学院

利用System.Net.Mail写了个发送邮件功能,用公司的邮件服务器和某政府的邮件服务器可以发送成功,用tom,qq,163,gmail不成功

0
悬赏园豆:30 [已关闭问题]

利用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 }

 

Roy_lee的主页 Roy_lee | 初学一级 | 园豆:170
提问于:2010-08-06 11:41
< >
分享
其他回答(7)
0

为啥不成功?错误信息?

Launcher | 园豆:45045 (高人七级) | 2010-08-06 11:42
因为我分别用好几个网站的邮件服务器,所以错误信息不同。Tom报这个错误:Mailbox name not allowed. The server response was: this mail is blocked by kbas system,blockid=bjapp13.tom.com.1938.1281016766
支持(0) 反对(0) Roy_lee | 园豆:170 (初学一级) | 2010-08-06 11:50
被kbas system当着垃圾邮件了,你可以找找如何不被当着垃圾邮件的处理方式.
支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2010-08-06 12:47
这是用QQ发送的报错信息:Syntax error in parameters or arguments. The server response was: mail from address must be same as authorization user
支持(0) 反对(0) Roy_lee | 园豆:170 (初学一级) | 2010-08-06 15:29
就是说你你缺少了某个参数,该参数标识你的邮件是从QQ邮件服务器授权的地址发送来的.
支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2010-08-06 16:33
0

代码好像没有什么问题。可能是配置信息不对吧。

比如你的smtp服务器写成了stmp.163.com 。有的可以发送就说明代码没有问题。可能是硬件环境、网络、或者配置信息方面的问题。注意一下吧。

邢少 | 园豆:10926 (专家六级) | 2010-08-06 11:46
我确定没有写错。
支持(0) 反对(0) Roy_lee | 园豆:170 (初学一级) | 2010-08-06 11:50
@Roy_lee: http://www.cnblogs.com/xingshao/archive/2010/02/25/1673677.html 我也曾用这个写过邮件发送的功能。参考一下。
支持(0) 反对(0) 邢少 | 园豆:10926 (专家六级) | 2010-08-06 14:24
0

过滤了。

Astar | 园豆:40805 (高人七级) | 2010-08-06 11:56
0

他们不让你这么干

钧梓昊逑 | 园豆:945 (小虾三级) | 2010-08-06 12:24
0

从2006年11月16日起,网易免费邮件系统(即:网易163/126新注册的邮箱用户)的POP3及SMTP服务将暂停开通不能开通pop3和smtp服务。
你可以选择其他邮箱服务器的smtp 或pop3服务

 

以前注册的你拿来试下肯定可以,我以前也碰过这种问题

jowo | 园豆:2834 (老鸟四级) | 2010-08-06 13:56
0

我用新注册的也可以发送

 

不过我遇到的问题是公司网络的缘故

用公司服务器可以,用其它的就不可以了

家里自己电脑试试

yuejianjun | 园豆:20 (初学一级) | 2010-08-06 16:49
0

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);//发送
        }
    }
}

 

发件箱不要用网易的,网易一直在反外挂、反垃圾邮件等方面有比较高的水平。虽然你不是发的垃圾邮件,但是你用程序可以群发垃圾邮件,所以网易就比较。。。

LyZane | 园豆:35 (初学一级) | 2010-08-07 15:24
0

这个问题最后怎么解决的

honkcal | 园豆:207 (菜鸟二级) | 2016-01-01 18:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册