asp net 发邮件(java实现发送邮件功能)

admin 444 0

大家好,asp net 发邮件相信很多的网友都不是很明白,包括java实现发送邮件功能也是一样,不过没有关系,接下来就来为大家分享关于asp net 发邮件和java实现发送邮件功能的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

一、完整的 asp.net邮件发送

简单点来说:POP3用于接收电子邮件,SMTP用于发送电子邮件。

POP3(Post Office Protocol 3)即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。POP3协议是TCP/IP协议族中的一员,,由RFC 1939定义

SMTP的全称是"Simple Mail Transfer Protocol",即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP协议属于 TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP服务器就是遵循 SMTP协议的发送邮件服务器。

使用ASP.NET发送电子邮件,需要引用System.Net.Mail命名空间。System.Net.Mail命名空间包含用于将电子邮件发送到简单邮件传输协议(SMTP)服务器进行传送的类。

(1)命名空间下有三个比较主要的类:

MailMessage:提供属性和方法来创建一个邮件消息对象,即邮件内容。

Attachment:提供属性和方法来创建一个邮件附件对象,即邮件附件。

SmtpClient:将电子邮件传输到您指定用于邮件传送的 SMTP主机。

Priority:邮件的优先级(分别为为High,Low,Normal)

Attachments:电子邮件的数据的附件集合

SubjectEncoding:电子邮件的主题内容使用的编码

IsBodyHtml:邮件正文是否为 Html格式的值

DeliveryMethod:指定如何处理待发的电子邮件

Host:SMTP事务的主机的名称或 IP地址

Credentials:设置用于验证发件人身份的凭据

(1)通过邮件服务提供商的SMTP来发送邮件

首先需要注册对应服务提供商免费邮箱,因为你要使用邮件服务提供商的SMTP,他们需要对身份进行验证,这样可以避免产生大量的垃圾邮件。

有三个是重要的信息:SMTP服务器、用户名、密码。从网上收集了几个类,可以参考下。

///<param name="mailTo">要发送的邮箱</param>

///<param name="mailSubject">邮箱主题</param>

///<param name="mailContent">邮箱内容</param>

///<returns>返回发送邮箱的结果</returns>

public static bool SendEmail(string mailTo,string mailSubject,string mailContent)

//设置发送方的邮件信息,例如使用网易的smtp

string smtpServer="smtp.163.com";//SMTP服务器

string mailFrom="XXX@163.com";//登陆用户名

string userPassword="XXX";//登陆密码

SmtpClient smtpClient=new SmtpClient();

smtpClient.DeliveryMethod= SmtpDeliveryMethod.Network;//指定电子邮件发送方式

smtpClient.Host= smtpServer;//指定SMTP服务器

smtpClient.Credentials= new System.Net.NetworkCredential(mailFrom, userPassword);//用户名和密码

MailMessage mailMessage= new MailMessage(mailFrom, mailTo);//发送人和收件人

mailMessage.Subject= mailSubject;//主题

mailMessage.Body= mailContent;//内容

mailMessage.BodyEncoding= Encoding.UTF8;//正文编码

mailMessage.IsBodyHtml= true;//设置为HTML格式

mailMessage.Priority= MailPriority.Low;//优先级

smtpClient.Send(mailMessage);//发送邮件

(2)利用本机的SMTP虚拟服务器的SMTP来发送邮件

需要进行SMTP配置,还是第一种简单实用。

POP3服务器地址:pop3.sina.com.cn

SMTP服务器地址:smtp.sina.com.cn

POP3服务器地址:pop.mail.yahoo.com

SMTP服务器地址:smtp.mail.yahoo.com

SMTP服务器地址:smtp.21cn.com sina.com:

二、.net 发送(html网页)邮件

1.在页面添加一个输入框和一个按钮

<%@ Page Language="C#" CodeFile="SendEMail.aspx.cs" Inherits="SendEMail"%>

<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<title>使用ASP.NET发送HTML格式邮件</title>

<form id="form1" runat="server">

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

<asp:Button ID="Button1" runat="server" Text="SendEmail" OnClick="Button1_Click"/></div>

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Text;//StringBuilder相关的命名空间

using System.IO;//文件流相关的命名空间

public partial class SendEMail: System.Web.UI.Page

protected void Page_Load(object sender, EventArgs e)

protected void Button1_Click(object sender, EventArgs e)

string strResult= string.Empty;

if(SendEmail(this.TextBox1.Text.Trim()))

Response.Write("<script language='javascript'>");

Response.Write("alert('"+strResult+"!');");

Response.Write("</script>");

private static bool SendEmail(string strName)

string Subject="使用ASP.NET发送HTML格式邮件";

jmail.Message Jmail= new jmail.Message();

string strPath= System.Web.HttpContext.Current.Server.MapPath("~/a.html");

//读取文件,“System.Text.Encoding.Default”可以解决中文乱码问题

StreamReader sr= new StreamReader(strPath, System.Text.Encoding.Default);

StringBuilder body= new StringBuilder();

//替换指定内容,通常为需要变动的内容

body=body.Replace("<%Message%>", strName);

string FromEmail="XXXX@163.com";

//Silent属性:如果设置为true,JMail不会抛出例外错误. JMail. Send(()会根据操作结果返回true或false

//Jmail创建的日志,前提loging属性设置为true

//信件的contentype.缺省是"text/plain"):字符串如果你以HTML格式发送邮件,改为"text/html"即可。

Jmail.ContentType="text/html";

Jmail.AddRecipient(ToEmail,"","");

Jmail.MailServerUserName="XXXX";

Jmail.MailServerPassWord="XXXX";

//邮件添加附件,(多附件的话,可以再加一条Jmail.AddAttachment("c:\\test.jpg",true,null);)就可以搞定了。[注]:加了附件,讲把上面的Jmail.ContentType="text/html";删掉。否则会在邮件里出现乱码。

//Jmail.AddAttachment("c:\\test.jpg",true,null);

Jmail.Body= body.ToString().Trim();

//Jmail发送的方法,可以修改,此为163邮箱服务器

bool bSend= Jmail.Send("smtp.163.com", false);

3.作为模板的HTML页面(JavaScript事件无法触发,CSS样式不能为引用文件)

<html xmlns="http://www.w3.org/1999/xhtml">

<head><title>使用ASP.NET发送HTML格式邮件</title>

<input type="text" id="lbText" value="<%Message%>"/><br/>

<b>From:</b><a href="http://zhoufeng.cnblogs.com/">http://zhoufeng.cnblogs.com/</a><br/>

<img id="img" src="https://gss0.baidu.com/7LsWdDW5_xN3otqbppnN2DJv/木合达/pic/item/30392594485a1413d21b70c9.jpg" width="139px"/>

三、asp.net发邮件,发送失败

---------------------------自己的测试----------------------------------------------

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

public partial class Default4: System.Web.UI.Page

protected void Page_Load(object sender, EventArgs e)

protected void btnSend_Click(object sender, EventArgs e)

SmtpClient client= new SmtpClient();

client.Credentials= new System.Net.NetworkCredential("ggyy-0516","820821");

client.Send(Initial(txtAddr.Text.ToString()));

ClientScript.RegisterStartupScript(this.GetType(),"myScript","<script>alert('发送成功!')</script>");

catch(System.Net.Mail.SmtpException ex)

ClientScript.RegisterStartupScript(this.GetType(),"myScript",

"<script>alert('"+ex.Message.ToString()+"')</script>");

public MailMessage Initial(string Address)

MailMessage m_Mail= new MailMessage();

m_Mail.From= new MailAddress("ggyy-0516@126.com");

m_Mail.To.Add(new MailAddress(Address));

m_Mail.Subject= txtTopic.Text;

m_Mail.Body= txtContent.Text;

m_Mail.SubjectEncoding= System.Text.Encoding.UTF8;

m_Mail.BodyEncoding= System.Text.Encoding.UTF8;

m_Mail.Priority= System.Net.Mail.MailPriority.High;

m_Mail.Attachments.Add(new Attachment("f:\\1.txt"));

当然,只是做了一个简单的测试,主要要用到封装号了的using System.Net.Mail这一个dll,在实验的过程中,发现163的邮箱不能使用,就是说只能向163的邮箱发信,而不能使用163的邮箱向外发送信件,原因是早期的申请的163邮箱帐号可以允许使用服务器,新注册的帐号是发不了的。于是便使用126的邮箱进行了测试,一切OK...

pop3端口:110,服务器:pop3.163.com/pop3.126.com

smtp端口:25,服务器:smtp.163.com/smtp.126.com

asp net 发邮件和java实现发送邮件功能的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!