求ASP.NET发送邮件的源代码 (调试成功立即结贴)
我想要用asp.net来写一个功能:发送mail到邮箱; 然后我想把这个程序包成service,让我的server
一开机变发这个email; 请高手提供发邮件的源代码:
问题点数:40、回复次数:19Top
1 楼ALLsharps(修改用户信息)回复于 2006-01-20 10:04:10 得分 20
public static bool SendEmail(string fromAddress,string fromName,string toAddress,string toName,string subject,string body)
{
MailMessage mail = new MailMessage();
mail.From = fromName + "<" + fromAddress + ">"; //发件人邮箱;
mail.To = toName + "<"+ toAddress +">"; //收件人邮箱
mail.Subject = subject; //邮箱主题
mail.Body = body; //邮件内容
mail.BodyFormat = MailFormat.Html; //邮件格式 HTML,文本
mail.Priority = MailPriority.Normal; //邮件等级
try
{
SmtpMail.Send(mail); //发邮件
}
catch
{
return false;
}
return true;
}Top
2 楼langhaijian(asf)回复于 2006-01-20 10:10:18 得分 0
我不需要发件人信箱,只要发送一段文字到收件人那里就可以了;Top
3 楼pbwf(书生)回复于 2006-01-20 10:27:19 得分 0
我前几天晚上郁闷了好几天.就研究这个来着.
用Jmail楼主.我已经测试过了.可以发,能收到的.
在前台加个发送按钮,单击事件如下:
private void Button1_Click(object sender, System.EventArgs e)
{
jmail.Message MailObj=new jmail.MessageClass();
MailObj.FromName="think";
MailObj.From="89384193@163.com";
MailObj.Logging=true;
MailObj.MailServerUserName="89384193";
MailObj.MailServerPassWord="***";
MailObj.Subject="**网发给你的密码.";
MailObj.HTMLBody="尊敬的用户!您好,您的帐户新密码是,为了安全起见,请您尽快修改密码,谢谢!";
MailObj.Charset="gb2312";
MailObj.Priority=3;
MailObj.AddRecipient("pbwf@sina.com","User","A"); //添加接收人
//发送
if(MailObj.Send("smtp.163.com",false))
{
Response.Write("新密码已发送至你的邮箱,请尽快查收!");
}
else
{
Response.Write("发送失败!");
}
}Top
4 楼langhaijian(asf)回复于 2006-01-20 10:36:01 得分 0
”书生“的解决方案跟我的不同啊;Top
5 楼langhaijian(asf)回复于 2006-01-20 10:56:11 得分 0
我不用JMAIL,用System.Web.Util 命名空间在ASP.NET;但是一楼哥们的dongdong我还没有跳出来Top
6 楼ALLsharps(修改用户信息)回复于 2006-01-20 11:02:40 得分 0
你最好做个邮件服务器,把SmtpServer改为你的服务地址,Top
7 楼langhaijian(asf)回复于 2006-01-20 11:20:34 得分 0
我写了下面一些代码:出现errror:还有我不太懂mail.from ,因为我只是将一个mail送到mail.to这个地方;而且是用code 来发送,而不是用mail.from地址来发送???
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
MailMessage Mail=new MailMessage ();
Mail.From="service@hjtc.com.cn";
Mail.To ="haijianlang@yahoo.com.cn";
Mail.BodyFormat=MailFormat.Text;
Mail.Body ="congratulation";
Mail.Subject ="i love you ";
SmtpMail.SmtpServer= "localhost";
SmtpMail.Send(Mail);
Error Msg:
“/WebApplication6”应用程序中的服务器错误。
--------------------------------------------------------------------------------
服务器拒绝了一个或多个收件人地址。服务器响应为: 550 5.7.1 Unable to relay for haijianlang@yahoo.com.cn
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Runtime.InteropServices.COMException: 服务器拒绝了一个或多个收件人地址。服务器响应为: 550 5.7.1 Unable to relay for haijianlang@yahoo.com.cn
源错误:
行 30: Mail.Subject ="i love you ";
行 31: SmtpMail.SmtpServer= "localhost";
行 32: SmtpMail.Send(Mail);
行 33:
行 34:
源文件: c:\inetpub\wwwroot\webapplication6\webform1.aspx.cs 行: 32
堆栈跟踪:
[COMException (0x8004020f): 服务器拒绝了一个或多个收件人地址。服务器响应为: 550 5.7.1 Unable to relay for haijianlang@yahoo.com.cn
]
[TargetInvocationException: 调用的目标发生了异常。]
System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) +0
System.RuntimeType.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParameters) +473
System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args) +29
System.Web.Mail.LateBoundAccessHelper.CallMethod(Type type, Object obj, String methodName, Object[] args)
System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String methodName, Object[] args)
[HttpException (0x80004005): 未能访问“CDO.Message”对象。]
System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String methodName, Object[] args)
System.Web.Mail.CdoSysHelper.Send(MailMessage message)
System.Web.Mail.SmtpMail.Send(MailMessage message)
WebApplication6.WebForm1.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\webapplication6\webform1.aspx.cs:32
System.Web.UI.Control.OnLoad(EventArgs e)
System.Web.UI.Control.LoadRecursive()
System.Web.UI.Page.ProcessRequestMain()
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573
Top
8 楼bonnie168(虚拟过客.net)回复于 2006-01-20 11:50:58 得分 0
顶,这些方法都不行,都是抄来抄去的Top
9 楼jonas20()回复于 2006-01-20 12:35:44 得分 20
一.利用Jmail发送邮件
1/**//// <summary>
2/// 利用Jmail发送邮件
3/// </summary>
4private void SendMailByJmail()
5{
6 /**////建立发邮件类
7 jmail.MessageClass oJmailMessage = new jmail.MessageClass();
8
9 /**//// 字符集
10 oJmailMessage.Charset = "GB2312";
11
12 /**////附件的编码格式
13 oJmailMessage.Encoding = "BASE64";
14 oJmailMessage.ContentType = "text/html";
15
16 /**////是否将信头编码成iso-8859-1字符集
17 oJmailMessage.ISOEncodeHeaders = false;
18
19 /**//// 优先级
20 oJmailMessage.Priority = Convert.ToByte(1);
21
22 /**////发送人邮件地址
23 oJmailMessage.From = TxtEmail.Text.Trim();
24
25 /**////发送人姓名
26 oJmailMessage.FromName = TxtName.Text.Trim();
27
28 /**//// 邮件主题
29 oJmailMessage.Subject = txtSubject.Text.Trim();
30
31 /**////身份验证的用户名
32 oJmailMessage.MailServerUserName = TxtSmtpUser.Text.Trim();
33
34 /**////用户密码
35 oJmailMessage.MailServerPassWord = TxtSmtpPwd.Text.Trim();
36
37 /**////添加一个收件人,抄送人和密送人的添加和该方法是一样的,只是分别使用AddRecipientCC和RecipientBCC两个属性
38 ///要是需要添加多个收件人,则重复下面的语句即可。添加多个抄送和密送人的方法一样
39 oJmailMessage.AddRecipient(txtReciver.Text.Trim(),"","");
40 if("" != upFile.PostedFile.FileName)
41 {
42 string attpath = upFile.PostedFile.FileName;
43 oJmailMessage.AddAttachment(@attpath,true,attpath.Substring(attpath.LastIndexOf(".")+1,3));//添加附件
44 }
45
46 /**////邮件内容
47 oJmailMessage.Body = txtContent.Text.Trim();
48
49 if(oJmailMessage.Send(TxtSmtServer.Text.Trim(),false))
50 {
51 Response.Write("发送成功!");
52 }
53 else
54 {
55 Response.Write("发送失败,请检查邮件服务器的设置!");
56 }
57
58 oJmailMessage = null;
59}
60Top
10 楼packe_peng_520()回复于 2006-01-20 14:21:20 得分 0
關注Top
11 楼langhaijian(asf)回复于 2006-01-20 15:08:52 得分 0
下面是我写的;有进展了,但是还是调试不成功; 我不用JMAIL;
MailMessage Mail=new MailMessage ();
Mail.From="ilygaoquan@sohu.com.cn";
Mail.To ="haijianlang@yahoo.com.cn";
Mail.BodyFormat=MailFormat.Text;
Mail.Body ="congratulation";
Mail.Subject ="i love you ";
Mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); //basic authentication
Mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "ilygaoquan"); //set your username here
Mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "1222221"); //set your password here
//SmtpMail.SmtpServer="lsg.moon.net";
SmtpMail.SmtpServer= "www.sohu.com";
SmtpMail.Send(Mail);
Top
12 楼langhaijian(asf)回复于 2006-01-20 15:14:51 得分 0
但是有下面的error:
与服务器的传输连接失败。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Runtime.InteropServices.COMException: 与服务器的传输连接失败。
源错误:
行 35: //SmtpMail.SmtpServer="lsg.moon.net";
行 36: SmtpMail.SmtpServer= "www.sohu.com";
行 37: SmtpMail.Send(Mail);
行 38:
行 39:
源文件: c:\inetpub\wwwroot\webapplication6\webform1.aspx.cs 行: 37
堆栈跟踪:
[COMException (0x80040213): 与服务器的传输连接失败。
Top
13 楼langhaijian(asf)回复于 2006-01-20 15:27:15 得分 0
顶一下Top
14 楼wjjdnajj(色空)回复于 2006-01-20 16:05:24 得分 0
支持楼主不用jmailTop
15 楼langhaijian(asf)回复于 2006-01-20 17:32:18 得分 0
搞了一整天,还是不行,期待高手!Top
16 楼singlepine(小山)回复于 2006-01-21 23:20:34 得分 0
msdn里面有例子
void Page_Load()
{
if (!IsPostBack)
{
txtTo.Text="john@contoso.com";
txtFrom.Text="marsha@contoso.com";
txtCc.Text="fred@contoso.com";
txtBcc.Text="wilma@contoso.com";
txtSubject.Text="Hello";
txtBody.Text="This is a test message.";
txtAttach.Text=@"C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Sunset.jpg,"
+ @"C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Winter.jpg";
txtBodyEncoding.Text = Encoding.ASCII.EncodingName;
txtBodyFormat.Text="HTML";
txtPriority.Text="Normal";
txtUrlContentBase.Text="http://www.contoso.com/images";
txtUrlContentLocation.Text="http://www.contoso.com/images";
// Name of relay mail server in your domain.
txtMailServer.Text="smarthost";
}
}
void btnSubmit_Click(Object sender, EventArgs e)
{
string sTo, sFrom, sSubject, sBody;
string sAttach, sCc, sBcc, sBodyEncoding;
string sBodyFormat, sMailServer, sPriority;
string sUrlContentBase, sUrlContentLocation;
int iLoop1;
sTo = txtTo.Text.Trim();
sFrom = txtFrom.Text.Trim();
sSubject = txtSubject.Text.Trim();
sBody = txtBody.Text.Trim();
sAttach = txtAttach.Text.Trim();
sCc = txtCc.Text.Trim();
sBcc = txtBcc.Text.Trim();
sBodyFormat = txtBodyFormat.Text.Trim();
sBodyEncoding = txtBodyEncoding.Text.Trim();
sPriority = txtPriority.Text.Trim();
sUrlContentBase = txtUrlContentBase.Text.Trim();
sUrlContentLocation = txtUrlContentLocation.Text.Trim();
sMailServer = txtMailServer.Text.Trim();
MailMessage MyMail = new MailMessage();
MyMail.From = sFrom;
MyMail.To = sTo;
MyMail.Subject = sSubject;
MyMail.Body = sBody;
MyMail.Cc = sCc;
MyMail.Bcc = sBcc;
MyMail.UrlContentBase = sUrlContentBase;
MyMail.UrlContentLocation = sUrlContentLocation;
if (txtBodyEncoding.Text == Encoding.UTF7.EncodingName)
MyMail.BodyEncoding = Encoding.UTF7;
else if (txtBodyEncoding.Text == Encoding.UTF8.EncodingName)
MyMail.BodyEncoding = Encoding.UTF8;
else
MyMail.BodyEncoding = Encoding.ASCII;
switch (sBodyFormat.ToUpper())
{
case "HTML":
MyMail.BodyFormat = MailFormat.Html;
break;
default:
MyMail.BodyFormat = MailFormat.Text;
break;
}
switch (sPriority.ToUpper())
{
case "HIGH":
MyMail.Priority = MailPriority.High;
break;
case "LOW":
MyMail.Priority = MailPriority.Low;
break;
default:
MyMail.Priority = MailPriority.Normal;
break;
}
// Build an IList of mail attachments.
if (sAttach != "")
{
char[] delim = new char[] {','};
foreach (string sSubstr in sAttach.Split(delim))
{
MailAttachment MyAttachment = new MailAttachment(sSubstr);
MyMail.Attachments.Add(MyAttachment);
}
}
SmtpMail.SmtpServer = sMailServer;
SmtpMail.Send(MyMail);
}
Top
17 楼shadow841112(孤风)回复于 2006-01-22 01:12:58 得分 0
但是有下面的error:
与服务器的传输连接失败。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Runtime.InteropServices.COMException: 与服务器的传输连接失败。
源错误:
行 35: //SmtpMail.SmtpServer="lsg.moon.net";
行 36: SmtpMail.SmtpServer= "www.sohu.com";
行 37: SmtpMail.Send(Mail);
行 38:
行 39:
源文件: c:\inetpub\wwwroot\webapplication6\webform1.aspx.cs 行: 37
堆栈跟踪:
[COMException (0x80040213): 与服务器的传输连接失败。
-----------------------------------------------------------------------------------
你的错误在于SMTP地址不对
SmtpMail.SmtpServer= "www.sohu.com";
//SOHU的该是smtp.sohu.com建议去查,并不是www.sohu.comTop
18 楼langhaijian(asf)回复于 2006-01-23 16:46:10 得分 0
改了还是有同样的error:
MailMessage Mail=new MailMessage();
Mail.From="haijianlang@yahoo.com.cn";
Mail.To ="haijianlang@yahoo.com.cn";
Mail.BodyFormat=MailFormat.Text;
Mail.Body ="congratulation";
Mail.Subject ="i love you ";
Mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); //basic authentication
Mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "haijianlang"); //set your username here
Mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "198121"); //set your password here
//SmtpMail.SmtpServer="lsg.moon.net";
SmtpMail.SmtpServer= "smtp.yahoo.com.cn";
SmtpMail.Send(Mail);Top
19 楼langhaijian(asf)回复于 2006-01-23 16:46:22 得分 0
郁闷啊Top




