当前位置:编程学习 > C#/ASP.NET >>

asp.net 如何实现邮件发送

PHP有一个功能是通过 PHP 函数的 sendmail 发送,这样就不用SMTP了,但是asp.net怎么实现这样的功能呢,不用SMTP,好像要安装组件之类的,希望懂的朋友告诉一下,如果有源码就更好了,分虽然不多,但是真的谢谢。chihanjie#126.com
答案:利用Jmail发送邮件:
private void SendMailByJmail()
{
/**////建立发邮件类
jmail.MessageClass oJmailMessage = new jmail.MessageClass();

/**//// 字符集
oJmailMessage.Charset = "GB2312";

/**////附件的编码格式
oJmailMessage.Encoding = "BASE64";
oJmailMessage.ContentType = "text/html";

/**////是否将信头编码成iso-8859-1字符集
oJmailMessage.ISOEncodeHeaders = false;

/**//// 优先级
oJmailMessage.Priority = Convert.ToByte(1);

/**////发送人邮件地址
oJmailMessage.From = TxtEmail.Text.Trim();

/**////发送人姓名
oJmailMessage.FromName = TxtName.Text.Trim();

/**//// 邮件主题
oJmailMessage.Subject = txtSubject.Text.Trim();

/**////身份验证的用户名
oJmailMessage.MailServerUserName = TxtSmtpUser.Text.Trim();

/**////用户密码
oJmailMessage.MailServerPassWord = TxtSmtpPwd.Text.Trim();

/**////添加一个收件人,抄送人和密送人的添加和该方法是一样的,只是分别使用AddRecipientCC和RecipientBCC两个属性
///要是需要添加多个收件人,则重复下面的语句即可。添加多个抄送和密送人的方法一样
oJmailMessage.AddRecipient(txtReciver.Text.Trim(),"","");
if("" != upFile.PostedFile.FileName)
{
string attpath = upFile.PostedFile.FileName;
oJmailMessage.AddAttachment(@attpath,true,attpath.Substring(attpath.LastIndexOf(".")+1,3));//添加附件
}

/**////邮件内容
oJmailMessage.Body = txtContent.Text.Trim();

if(oJmailMessage.Send(TxtSmtServer.Text.Trim(),false))
{
Response.Write("发送成功!");
}
else
{
Response.Write("发送失败,请检查邮件服务器的设置!");
}

oJmailMessage = null;
}

1/**////
2/// 利用Jmail接收邮件
3///
4private void ReciveByJmail()
5{
6 /**////建立收邮件对象
7 jmail.POP3Class popMail = new POP3Class();
8
9 /**////建立邮件信息接口
10 jmail.Message mailMessage;
11
12 /**////建立附件集接口
13 jmail.Attachments atts;
14
15 /**////建立附件接口
16 jmail.Attachment att;
17
18 try
19 {
20 popMail.Connect(TxtPopUser.Text.Trim(),TxtPopPwd.Text.Trim(),TxtPopServer.Text.Trim(),Convert.ToInt32(TxtPopPort.Text.Trim()));
21
22 /**////如果收到邮件
23 if(0 < popMail.Count)
24 {
25 /**////根据取到的邮件数量依次取得每封邮件
26 for(int i=1;i <= popMail.Count;i++)
27 {
28 /**////取得一条邮件信息
29 mailMessage = popMail.Messages[i];
30
31 /**////取得该邮件的附件集合
32 atts = mailMessage.Attachments;
33
34 /**////设置邮件的编码方式
35 mailMessage.Charset = "GB2312";
36
37 /**////设置邮件的附件编码方式
38 mailMessage.Encoding = "Base64";
39
40 /**////是否将信头编码成iso-8859-1字符集
41 mailMessage.ISOEncodeHeaders = false;
42
43 /**////邮件的优先级
44 txtpriority.Text = mailMessage.Priority.ToString();
45
46 /**////邮件的发送人的信箱地址
47 txtSendMail.Text = mailMessage.From;
48
49 /**////邮件的发送人
50 txtSender.Text = mailMessage.FromName;
51
52 /**////邮件主题
53 txtSubject.Text = mailMessage.Subject;
54
55 /**////邮件内容
56 txtBody.Text = mailMessage.Body;
57
58 /**////邮件大小
59 txtSize.Text = mailMessage.Size.ToString();
60
61 for(int j=0;j<ATTS.COUNT;J++)
62 {
63 /**////取得附件
64 att = atts[j];
65
66 /**////附件名称
67 string attname = att.Name;
68
69 /**////上传到服务器
70 att.SaveToFile("e:\\attFile\\"+attname);
71
72 }
73
74 }
75 panMailInfo.Visible = true;
76 att = null;
77 atts = null;
78 }
79 else
80 {
81 Response.Write("没有新邮件!");
82 }
83
84 popMail.DeleteMessages();
85 popMail.Disconnect();
86 popMail = null;
87 }
88 catch
89 {
90 Response.Write("Warning!请检查邮件服务器的设置是否正确!");
91 }
92}

说明:要接收邮件,需要用JMAIL专业版的,本站会有提供下的!
还须引入using jmail;

 

 

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Net.Mail;
using System.Web.Configuration;

public class 类名
{
public bool SendEmail(string FromEmail, string ToEmail, string Subject, string Body)
{
bool Success = false;
try
{
System.Net.Mail.SmtpClient client = new SmtpClient("smtp服务器地址");
client.Credentials = new System.Net.NetworkCredential("邮箱地址", "密码");
//string inceptMail = WebConfigurationManager.AppSettings["ek_InceptMail"].ToString();
MailMessage message = new MailMessage();
//message.Bcc.Add(inceptMail);
message.To.Add(ToEmail);
message.From = new MailAddress(FromEmail);
message.Subject = Subject;
message.Body = Body;
message.IsBodyHtml = true;
client.Send(message);

Success = true;
}
catch (Exception ex)
{
string Error = ex.Message;
Success = false;
}
return Success;

}
}

webconfig加入
<appSettings>
<add key="ek_SMTPPort" value="25"/>
</appSettings>

 

 

附加说明:

JMail是一个非常成熟和强大的邮件组件。它不但可以完成发邮件的工作,还可以POP收信,并支持收发邮件时的PGP加密,内置一个群发邮件的对象,可以使群发编程更简单。

即使是很多其他组件也都能完成的发邮件功能,JMail 的完成也可以称得上最出色的,除了常见的抄送暗送等多收件人功能外,它还支持添加嵌入式图片附件,并且可以从URL读取文件作为附件。

JMail 的免费版本拥有全部完成的发邮件功能,只在收邮件和加密邮件等我们不常用到的方面进行了限制。

 

上一个:ASP.Net URL 重写方面
下一个:asp.net的生命周期?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,