C# 邮件发送和接收实现代码
- 作者: 一叶孤城17796060
- 来源: 51数据库
- 2021-08-03
邮件发送
方法一:使用system.web.mail命名空间(此方法我测试没有成功过)
#region 发送邮件:此方法失败
protected void sendfailed()
{
system.web.mail.mailmessage mail = new system.web.mail.mailmessage();
mail.from = "test@ gmail.com";
mail.to = " test@ gmail.com ";
mail.subject = "for test";
mail.priority = system.web.mail.mailpriority.normal;
mail.bodyencoding = encoding.default;
mail.bodyformat = mailformat.html;
mail.body = "this is a email!<input type='button' value='ok'/>";
mail.fields.add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); //basic authentication
mail.fields.add("http://schemas.microsoft.com/cdo/configuration/sendusername", "test"); //set your username here
mail.fields.add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "****"); //set your password here
mail.fields.add("http://schemas.microsoft.com/cdo/configuration/smtpserver", "smtp.gmail.com");
mail.fields.add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", "587");
mail.fields.add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");
smtpmail.smtpserver = "smtp.gmail.com";
smtpmail.send(mail);
}
#endregion
方法二:使用system.net.mail命名空间(此方法测试成功)
我使用的gmail的邮箱,以及他提供免费smtp服务,之前试了好几个邮箱都不成功。gmail的smtp服务必须经过ssl加密,才可以验证成功。
#region 发送邮件:此方法可行
protected void sendsuccess()
{
system.net.mail.mailmessage message = new system.net.mail.mailmessage();
message.from = new mailaddress("test@gmail.com", "someone");//必须是提供smtp服务的邮件服务器
message.to.add(new mailaddress("test@yahoo.com.cn"));
message.subject = "测试邮件" ;
message.cc.add(new mailaddress("test@126.com"));
message.bcc.add(new mailaddress("test@126.com"));
message.isbodyhtml = true;
message.bodyencoding = system.text.encoding.utf8;
message.body = "邮件发送测试";
message.priority = system.net.mail.mailpriority.high;
smtpclient client = new smtpclient("smtp.gmail.com", 587); // 587;//gmail使用的端口
client.credentials = new system.net.networkcredential("test@gmail.com", "password"); //这里是申请的邮箱和密码
client.enablessl = true; //必须经过ssl加密
try
{
client.send(message);
response.write("邮件已经成功发送到" + message.to.tostring() + "<br>");
}
catch (exception ee)
{
response.write(ee.message + "<br>" /* + ee.innerexception.message*/ );
}
}
#endregion
邮件接收
我使用的是lumisoft.net这个开源的项目,也是从一个网友哪里看到的下载地址,然后自己看了下代码,写了个简单的接收方法。首先将代码中relrease目录下的dll文件引用到项目中。
using lumisoft.net.pop3.client;
using lumisoft.net.mail;
……
public ilist<mail_message> receivemail()
{
ilist<mail_message> maillist = new list<mail_message>();
using (pop3_client client = new pop3_client())
{
client.connect("pop.gmail.com",995,true);
client.authenticate("zw.seaman", "zw_seaman", false);
pop3_clientmessagecollection coll = client.messages;
for (int i = 0; i < coll.count; i++)
{
pop3_clientmessage message = coll[i];
mail_message mm = mail_message.parsefrombyte(coll[i].messagetobyte());
maillist.add(mm);
}
}
return maillist;
}
protected void page_load(object sender, eventargs e)
{
ilist<mail_message> maillist = new zmail.mail().receivemail();
foreach (mail_message mail in maillist)
{
stringbuilder sb = new stringbuilder();
sb.append(mail.from.tostring()).append(" 发送给 ");
sb.append(mail.to.tostring()).append("<br/>") ;
sb.append(mail.subject).append("<br/>");
sb.append(mail.bodyhtmltext).append("<hr/>");
response.write(sb.tostring());
}
}
这两个方法很容易理解,只实现了最基本的功能,如果需要可以查看源代码获取更多信息。
方法一:使用system.web.mail命名空间(此方法我测试没有成功过)
复制代码 代码如下:
#region 发送邮件:此方法失败
protected void sendfailed()
{
system.web.mail.mailmessage mail = new system.web.mail.mailmessage();
mail.from = "test@ gmail.com";
mail.to = " test@ gmail.com ";
mail.subject = "for test";
mail.priority = system.web.mail.mailpriority.normal;
mail.bodyencoding = encoding.default;
mail.bodyformat = mailformat.html;
mail.body = "this is a email!<input type='button' value='ok'/>";
mail.fields.add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); //basic authentication
mail.fields.add("http://schemas.microsoft.com/cdo/configuration/sendusername", "test"); //set your username here
mail.fields.add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "****"); //set your password here
mail.fields.add("http://schemas.microsoft.com/cdo/configuration/smtpserver", "smtp.gmail.com");
mail.fields.add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", "587");
mail.fields.add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");
smtpmail.smtpserver = "smtp.gmail.com";
smtpmail.send(mail);
}
#endregion
方法二:使用system.net.mail命名空间(此方法测试成功)
我使用的gmail的邮箱,以及他提供免费smtp服务,之前试了好几个邮箱都不成功。gmail的smtp服务必须经过ssl加密,才可以验证成功。
复制代码 代码如下:
#region 发送邮件:此方法可行
protected void sendsuccess()
{
system.net.mail.mailmessage message = new system.net.mail.mailmessage();
message.from = new mailaddress("test@gmail.com", "someone");//必须是提供smtp服务的邮件服务器
message.to.add(new mailaddress("test@yahoo.com.cn"));
message.subject = "测试邮件" ;
message.cc.add(new mailaddress("test@126.com"));
message.bcc.add(new mailaddress("test@126.com"));
message.isbodyhtml = true;
message.bodyencoding = system.text.encoding.utf8;
message.body = "邮件发送测试";
message.priority = system.net.mail.mailpriority.high;
smtpclient client = new smtpclient("smtp.gmail.com", 587); // 587;//gmail使用的端口
client.credentials = new system.net.networkcredential("test@gmail.com", "password"); //这里是申请的邮箱和密码
client.enablessl = true; //必须经过ssl加密
try
{
client.send(message);
response.write("邮件已经成功发送到" + message.to.tostring() + "<br>");
}
catch (exception ee)
{
response.write(ee.message + "<br>" /* + ee.innerexception.message*/ );
}
}
#endregion
邮件接收
我使用的是lumisoft.net这个开源的项目,也是从一个网友哪里看到的下载地址,然后自己看了下代码,写了个简单的接收方法。首先将代码中relrease目录下的dll文件引用到项目中。
复制代码 代码如下:
using lumisoft.net.pop3.client;
using lumisoft.net.mail;
……
public ilist<mail_message> receivemail()
{
ilist<mail_message> maillist = new list<mail_message>();
using (pop3_client client = new pop3_client())
{
client.connect("pop.gmail.com",995,true);
client.authenticate("zw.seaman", "zw_seaman", false);
pop3_clientmessagecollection coll = client.messages;
for (int i = 0; i < coll.count; i++)
{
pop3_clientmessage message = coll[i];
mail_message mm = mail_message.parsefrombyte(coll[i].messagetobyte());
maillist.add(mm);
}
}
return maillist;
}
protected void page_load(object sender, eventargs e)
{
ilist<mail_message> maillist = new zmail.mail().receivemail();
foreach (mail_message mail in maillist)
{
stringbuilder sb = new stringbuilder();
sb.append(mail.from.tostring()).append(" 发送给 ");
sb.append(mail.to.tostring()).append("<br/>") ;
sb.append(mail.subject).append("<br/>");
sb.append(mail.bodyhtmltext).append("<hr/>");
response.write(sb.tostring());
}
}
这两个方法很容易理解,只实现了最基本的功能,如果需要可以查看源代码获取更多信息。
推荐阅读
- C#通过fleck实现wss协议的WebSocket多人Web实时聊天(附源码)
- 团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
- 使用 MSBuild.exe 在发布模式下构建 C# 解决方案
- 当我发布 Web 应用程序时,AfterPublish 脚本不运行
- 构建时 T4 转换的产品仅在下一个构建中使用
- ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
- 新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
- 如何将条件编译符号(DefineConstants)传递给 msbuild
- MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
- NuGet 包还原找不到包,没有源
热点文章
团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
0
使用 MSBuild.exe 在发布模式下构建 C# 解决方案
0
当我发布 Web 应用程序时,AfterPublish 脚本不运行
0
构建时 T4 转换的产品仅在下一个构建中使用
0
ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
0
新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
0
如何将条件编译符号(DefineConstants)传递给 msbuild
0
MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
0
NuGet 包还原找不到包,没有源
0
使用 C# 6.0 功能运行 TFS 构建
0
