发送邮件

zlb789 2008-10-21 09:30:00
在asp.net 中发邮件一直没有很好的解决方法,
经常遇到这样 那样的错误。

例如我用126的服务器 smtp.126.com 这时候有的用户可以, 有的却不行 。不知道为什么,有的说是服务器加了限制。

这个问题到底如何解决啊 , 能保证邮件发的出去 ,别人收的到却不是垃圾邮件
...全文
85 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Star_Gamer 2009-01-06
  • 打赏
  • 举报
回复
一个原因!!!就是刚注册的邮箱没有开通POP 和STMP服务..
解决办法: 1.赚积分
2.升级为VIP邮箱
3.注册新浪邮箱.因为新浪邮箱注册就可以设置并开通服务
终极问题: 每个邮箱服务器都会做限制.如果发现你主机发送的频率过高就会K你.导致你后面的recv 全是空白.

!!差点误人子弟..郁闷..
Star_Gamer 2009-01-06
  • 打赏
  • 举报
回复
一个原因!!!就是刚注册的邮箱没有开通POP 和STMP服务..
解决办法: 1.赚积分
2.升级为VIP邮箱
3.注册雅虎邮箱.因为雅虎注册就可以设置并开通服务
终极问题: 每个邮箱服务器都会做限制.如果发现你主机发送的频率过高就会K你.导致你后面的recv 全是空白.
lilihua520 2008-10-21
  • 打赏
  • 举报
回复
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Net.Mail;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
public void SendMailUseGmail()
{
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
string addressee = this.addressee.Text;
string title = this.title.Text;
string content = this.content.Text;
msg.To.Add(addressee);//收件人

//msg.To.Add("b@b.com");可以发送给多人
//可以抄送给多人
//msg.CC.Add("196779792@qq.com");

msg.From = new MailAddress("196779792@qq.com", "196779792@qq.com", System.Text.Encoding.UTF8);
/* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/

msg.Subject = title;//邮件标题
msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码
msg.Body = content;//邮件内容
msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
msg.IsBodyHtml = false;//是否是HTML邮件
msg.Priority = MailPriority.High;//邮件优先级

SmtpClient client = new SmtpClient();
client.Credentials = new System.Net.NetworkCredential("jl99000@gmail.com", "990004086");
//上述写你的GMail邮箱和密码

client.Port = 587;//Gmail使用的端口
client.Host = "smtp.gmail.com";
client.EnableSsl = true;//经过ssl加密
object userState = msg;
try
{
client.Send(msg);
//简单一点儿可以client.Send(msg);
Response.Write("发送成功");
}
catch (System.Net.Mail.SmtpException ex)
{
Response.Write(ex.Message);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
SendMailUseGmail();
}
}

这个绝对好用!原来用的!
kfps8kfps8 2008-10-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jieyf 的回复:]
楼主换一个邮箱试试,可能你之前测试发送邮件频率过高,导致126封了你邮箱的发送功能了,因为很多邮箱都有防垃圾邮件检测的,如果是一段时间内发送频率过高就会被自动屏蔽的。
我一直这么用的
[/Quote]
是这样的
zlb789 2008-10-21
  • 打赏
  • 举报
回复
不是这个问题
好象是以前注册邮箱可以 , 现在注册不行

具说是邮件服务器做了限制 ,具体也不知道 。
DragonFly-9 2008-10-21
  • 打赏
  • 举报
回复
楼主换一个邮箱试试,可能你之前测试发送邮件频率过高,导致126封了你邮箱的发送功能了,因为很多邮箱都有防垃圾邮件检测的,如果是一段时间内发送频率过高就会被自动屏蔽的。
我一直这么用的
zlb789 2008-10-21
  • 打赏
  • 举报
回复
期待高手解决
zlb789 2008-10-21
  • 打赏
  • 举报
回复
试过了 4楼的
我刚刚注册了一个邮箱 发不出去
The message was undeliverable. All servers failed to receive the message
zlb789 2008-10-21
  • 打赏
  • 举报
回复
楼上的能确定 每个163的邮箱都能发的出去吗?
DragonFly-9 2008-10-21
  • 打赏
  • 举报
回复
C#2.0中的System.Net.Mail中提供了系列的邮件收发的功能支持,很强大,我将自己在项目中用到的实现网站发送邮件的功能类贴出(部分核心代码),供大家参考:

using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Mail;

namespace BLL.Mail
{
/// <summary>
/// 名称:邮件发送管理类
/// 说明:该类用于提供对网站内部对用户进行邮件发送的控制
/// 模式:普通类
/// 编写:龙行九天
/// </summary>
public class MailManager
{
public const int SMTP_PORT = 23;
public const int POP_PORT = 110;

/// <summary>
/// 发送邮件
/// </summary>
/// <param name="sFrom">发送方,可以为空,将使用系统默认发送地址</param>
/// <param name="sTo">接收者地址(必须),多个地址用逗号(,)分隔</param>
/// <param name="sSubject">标题(必须)</param>
/// <param name="sBody">内容(必须)</param>
/// <param name="IsHtml">是否发送HTML格式邮件</param>
/// <param name="sAttachs">附件,可以为空,多个附件用分号(;)分隔开</param>
/// <returns></returns>
public bool SendMail(string sFrom, string sTo, string sSubject, string sBody, bool IsHtml,string sAttachs)
{
BLL.Config.EnvironmentParam oParams = BLL.Config.EnvironmentParam.GetInstance();

//邮件内容
if (sFrom == "") sFrom = oParams.Mail_Address;

MailMessage oMsg = new MailMessage();
oMsg.From = new MailAddress(sFrom.Trim());

//添加收件方地址
sTo = sTo.Trim();
string[] sToArray = sTo.Split(',', ' ', ';', '|'); //实际支持逗号、空格、分号和|
for (int i = 0; i < sToArray.Length; i++)
{
string sAddress = sToArray[i].Trim();
if(sAddress != "")
oMsg.To.Add(sAddress);
}

oMsg.Subject = sSubject;
oMsg.IsBodyHtml = IsHtml;
oMsg.ReplyTo = oMsg.From;
oMsg.Priority = MailPriority.Normal;
oMsg.BodyEncoding = Encoding.UTF8;
oMsg.Body = sBody;

//邮件附件
if (sAttachs != "")
{
string[] attachFiles = sAttachs.Split(',', ' ', ';', '|');//实际支持逗号、空格、分号和|
for (int i = 0; i < attachFiles.Length; i++)
{
string sFile = attachFiles[i].Trim();
if (sFile != "")
oMsg.Attachments.Add(new Attachment(sFile));
}
}

//SMTP客户端发送邮件
try
{
SmtpClient oSmtp = new SmtpClient(oParams.SMTP_Server); //"smtp.163.com"
//if (oParams.SMTP_Port != SMTP_PORT ) oSmtp.Port = oParams.SMTP_Port;
System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential();
SMTPUserInfo.UserName = oParams.SMTP_User; //webadmin
SMTPUserInfo.Password = oParams.SMTP_Pass; //123456
oSmtp.Credentials = SMTPUserInfo;
oSmtp.Send(oMsg);
return true;
}
catch (Exception ex)
{
throw new Exception(ex.StackTrace);
}
}
}
}


备注说明:代码中出现的变量BLL.Config.EnvironmentParam oParams是网站配置参数类,将发送邮件使用到的几个参数都配置到配置文件中,通过该类来读取:
oParams.SMTP_Server :SMTP服务器,如smtp.163.com
oParams.SMTP_Port : SMTP服务器的端口,默认是23
oParams.SMTP_User :使用的邮箱账号,如:webadmin
oParams.SMTP_Pass :使用的邮箱密码 如:1234
oParams.Mail_Address:使用的发送邮箱 如:webadmin@myweb.com

该类已经过测试。
zlb789 2008-10-21
  • 打赏
  • 举报
回复
对邮箱限制了 这个问题可以解决吗?
simon12528 2008-10-21
  • 打赏
  • 举报
回复
有的邮箱 有邮件过滤 不好保证你发出去的是不是垃圾邮件
有的邮件发不出去 那是服务器对你的邮箱做了限制 要在很早以前注册的邮箱才有可能正常的发送邮件
yangsongshuang 2008-10-21
  • 打赏
  • 举报
回复
楼主用的什么技术啊!
你用DotNetOpenMail吧,很好用的

62,074

社区成员

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

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

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

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