引言
最近在项目中有了这么一个需求,在系统中需要给客户发送邮件,当小编接到这个任务的时候感觉不知道从什
么地方下手,在以前的学习中也实现过发邮件的功能,但是那是利用的outlook来实现,效果非常的不好,所以这次
打算利用一些主流的邮箱来实现,像163、126等邮箱!在实现的过程中有很多的方法,但是小编认为比较简单并且比
较靠谱的方法就是利用Jamil插件来实现,下面小编就来和大家分享一下实现过程。
一、下载JMail44_pro.exe插件,此插件已经上传到csdn大家可以自行下载,下载地址如下:
http://download.csdn.net/detail/u013045437/9270547
二、安装此插件,并且在安装路径下面找到jamil.dll文件,添加到项目的引用中
三、在项目中引用jmail,即:using jmail;
四、代码编写如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using jmail;
using System.IO;
namespace JmailFasong
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
jmail.MessageClass Jmail = new jmail.MessageClass();
DateTime t = DateTime.Now;
String Subject = this.txtSubject.Text;
String Body = this.txtBody.Text;
String FromEmail = this.txtFromEmail.Text;
String ToEmail = this.txtToEmail.Text;
//Silent属性:如果设置为true,JMail不会抛出例外错误.
Jmail.Silent = true;
//Jmail创建的日志,前提loging属性设置为true
Jmail.Logging = true;
//字符集,缺省为"US-ASCII"
Jmail.Charset = "GB2312";
//信件的contentype. 缺省是"text/plain" 字符串如果你以HTML格式发送邮件, 改为"text/html"即可。
//Jmail.ContentType = "text/html";
//添加收件人
Jmail.AddRecipient(ToEmail, "", "");
//发件人邮件用户名
Jmail.From = FromEmail;
//发件人邮件用户名
Jmail.MailServerUserName = this.txtUserName.Text;
//发件人邮件密码
Jmail.MailServerPassWord = this.txtPassword.Text;
//设置邮件标题
Jmail.Subject = Subject;
邮件添加附件(增加附件可再加一条Jmail.AddAttachment( "c:\\test.jpg",true,null);就可以搞定了。
增加附件后要把上面的Jmail.ContentType="text/html";删掉,否则会在邮件里出现乱码。
Jmail.AddAttachment(FileUpload1.PostedFile.FileName, true, null);
//邮件内容
Jmail.Body = Body;
//设置SMTP服务器
Jmail.Send("smtp.163.com", false);
//关闭Jmail连接
Jmail.Close();
Response.Write("发送成功");
}
}
}
前台页面代码(非常的简单)
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="JmailFasong.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
发件人邮箱:<asp:TextBox ID="txtFromEmail" runat="server"></asp:TextBox>
用户名:<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
密码:<asp:TextBox ID="txtPassword" runat="server"></asp:TextBox>
收件人地址:<asp:TextBox ID="txtToEmail" runat="server"></asp:TextBox>
邮件主题:<asp:TextBox ID="txtSubject" runat="server"></asp:TextBox>
邮件内容:<asp:TextBox ID="txtBody" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
<asp:FileUpload ID="FileUpload1" runat="server" />
</div>
</form>
</body>
</html>
五、常见错误解决方案
在做完上面的工作以后会发现,程序在运行的时候出现如下错误:
解决方法如下:
在我们刚刚引入的jmail.dll文件上面右击——选择属性——将嵌入互操作类型改为true;
在本文的实例代码已经上传到csdn上面了,所以如果读者想要源码可以直接再csdn上面下载,资源地址如下:
http://download.csdn.net/detail/u013045437/9271287