C#发邮件本地测试可以,为什么在服务器端不行?

cjdxhc 2010-07-13 10:37:07
        
using System.Net.Mail;
/// <summary>
/// 发送邮件
/// </summary>
/// <param name="emailSub">邮件主题</param>
/// <param name="emailBody">邮件内容</param>
/// <param name="toMail">收件者</param>
/// <returns>返回发送的结果</returns>
public static string SendMail(string emailSub, string emailBody, string toMail)
{
string msg = string.Empty;

MailMessage mail = new MailMessage();

mail.From = new MailAddress("a@qq.com");

mail.To.Add(new MailAddress(toMail));

mail.Sender = new MailAddress("a@c.com");

mail.Subject = emailSub;

mail.Body = emailBody;

mail.IsBodyHtml = true;

mail.Priority = MailPriority.Normal;


SmtpClient sc = new SmtpClient("pop3.c.com");

sc.Credentials = new NetworkCredential("a@c.com", "xxx");

sc.DeliveryMethod = SmtpDeliveryMethod.Network;
try
{
sc.Send(mail);
msg = "发送成功!";
}
catch (SmtpException e)
{
msg = e.StatusCode + "_" + e.Message;
}
return msg;
}


在localhost本机调试时,可以发送邮件,部署到2003服务器上,通过域名访问操作时,获取的情况是发送邮件失败,StatusCode是GeneralFailure

msdn上GeneralFailure的解释是
事务未能发生。当未能找到指定的 SMTP 主机时,会收到此错误。

应该如何设置才行呢?
...全文
498 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
妥妥 2011-07-21
  • 打赏
  • 举报
回复
可以了吗 我的也不行啊
leejelen 2010-07-14
  • 打赏
  • 举报
回复
服务器不是所有发邮件模式都支持的。建议下个ASP探针,放到服务器,打开页面,就会测试出支持哪种发邮件的方法了。
AsYouLikeIt 2010-07-14
  • 打赏
  • 举报
回复
到底出现的是什么异常呢?

如果需要的话我给你发个例子你看看 是不是代码有什么问题
cjdxhc 2010-07-14
  • 打赏
  • 举报
回复
各位高手 还有没有别的解决方案呢?
xiaogangqq123456 2010-07-13
  • 打赏
  • 举报
回复
看下端口是否被占用了..或者在程序里面指定先端口..

还有。。如果你这个邮箱是自己服务器架设的话..在邮件服务器里应该有设置.
2321zhf 2010-07-13
  • 打赏
  • 举报
回复
telnet pop3.c.com 25
cjdxhc 2010-07-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 duan_yuying 的回复:]
我之前做的也是本地可以,服务器不可以
把防火墙给停了就可以,你可以试一下。
一般服务器上防火墙很快会恢复的,这个问题我也没有彻底解决。
[/Quote]

我关闭了防火墙,还是不可以。
duan_yuying 2010-07-13
  • 打赏
  • 举报
回复
我之前做的也是本地可以,服务器不可以
把防火墙给停了就可以,你可以试一下。
一般服务器上防火墙很快会恢复的,这个问题我也没有彻底解决。
cjdxhc 2010-07-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dahaidao 的回复:]
发邮件pop3默认的是110,
收邮件smtp默认的是25
[/Quote]

收邮件pop3默认的是110,
发邮件smtp默认的是25

你写反了。
dahaidao 2010-07-13
  • 打赏
  • 举报
回复
可以在服务器上用telnet邮件服务器,试一下110端口是不是正常。
dahaidao 2010-07-13
  • 打赏
  • 举报
回复
发邮件pop3默认的是110,
收邮件smtp默认的是25
cjdxhc 2010-07-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 guyehanxinlei 的回复:]
是不是被防火墙给挡了?
[/Quote]

需要开启什么端口?
cjdxhc 2010-07-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 beyond_me21 的回复:]
服务器上有没有配置smtp服务
[/Quote]

邮件服务器 不在此服务器上,不需要设置的,此服务器是应用服务器。

//发送邮件的方式是网络,只要有网络就可以了。
sc.DeliveryMethod = SmtpDeliveryMethod.Network;
beyond_me21 2010-07-13
  • 打赏
  • 举报
回复
服务器上有没有配置smtp服务
YISUKU_LEE 2010-07-13
  • 打赏
  • 举报
回复
先说你服务器 的邮件服务器(POP3,SMTP) 有没有配置啊。
管理工具->管理您的服务器->添加或删除角色->下一步 然后你看看有没有正确配置
guyehanxinlei 2010-07-13
  • 打赏
  • 举报
回复
是不是被防火墙给挡了?
cjdxhc 2010-07-13
  • 打赏
  • 举报
回复
mail.From = new MailAddress("a@qq.com");
改为
mail.From = new MailAddress("a@c.com");

写错了。
cjdxhc 2010-07-13
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 asyoulikeit 的回复:]
服务器 好像 通过网络发送邮件 也需要 服务器安装 SMTP 服务吧!
[/Quote]

已经安装了SMTP Service了。还是不行!
AsYouLikeIt 2010-07-13
  • 打赏
  • 举报
回复
服务器 好像 通过网络发送邮件 也需要 服务器安装 SMTP 服务吧!
cjdxhc 2010-07-13
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 worldnic 的回复:]
有可能你的邮箱SMTP解析被别人屏蔽了,我也曾经有这样的情况。主机在美国,邮局在中国,发送不了,美国主机商帮我PING,发现到广东电信被屏蔽了。后来在境外搞了个邮箱就可以发送了
[/Quote]

谢谢。但是为什么我配置在outlook里就可以发送,这和你说的有关系吗?我在本地也是可以发送的啊!就是把网站项目部署到自己的服务器上就不可以了,不知道是为什么!
加载更多回复(1)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧