使用C#和Java发送邮件(转载)
using System.Net.Mail;
using System.Net; public class EmailEntity
{
private MailMessage mm; /// <summary>
/// 发送邮件
/// </summary>
public void sendMessage()
{ //指定发件人的邮箱地址
MailAddress fromAddress = new MailAddress("abc@163.com");
//指定收件人的邮箱地址
MailAddress toAddress = new MailAddress("efg@qq.com");
//创建邮件对象
mm = new MailMessage(fromAddress, toAddress);
//添加一个密送的邮件地址
mm.Bcc.Add(new MailAddress("xiuxiu@qq.com"));
//添加一个抄送的邮件地址
mm.CC.Add(new MailAddress("me@qq.com"));
//指定邮件标题的编码格式
mm.SubjectEncoding = Encoding.UTF8;
//设置邮件标题
mm.Subject = "我是标题";
//指定邮件正文编码
mm.BodyEncoding = Encoding.UTF8;
//指定邮件正文是否text/html类型
mm.IsBodyHtml = true;
//设置邮件正文内容
mm.Body = "<span style='color:#ff0000;font-weight:bold;'>我爱秀秀!</span>";
//创建附件
Attachment file = new Attachment(AppDomain.CurrentDomain.BaseDirectory+"xiuxiu.jpg");
//设置附件的创建日期
file.ContentDisposition.CreationDate = DateTime.Now;
//设置附件的类型
file.ContentType = new System.Net.Mime.ContentType("image/jpeg;charset=UTF-8");
//将附件添加到邮件中
mm.Attachments.Add(file); //指定邮件发送服务器的地址和端口号
SmtpClient sc = new SmtpClient("smtp.163.com", );
//指定发件人的身份验证信息
sc.Credentials = new NetworkCredential("abc", "");
//sc.Send(mm);
//注册异步发送事件
sc.SendCompleted += new SendCompletedEventHandler(sc_SendCompleted);
//开始执行异步发送邮件
sc.SendAsync(mm, null);
}
//异步发送邮件完成时处理事件
void sc_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
if (mm != null)
{
mm.Dispose();//释放资源
}
if (e.Cancelled)
{
Console.WriteLine("用户已取消!");
}
else if (e.Error != null)
{
Console.WriteLine("发送失败,原因如下:" + e.Error.Message);
}
else
{
Console.WriteLine("发送成功!");
}
}
}
1 import java.util.Date;
2 import java.util.Properties;
3 import javax.mail.Authenticator;
4 import javax.mail.PasswordAuthentication;
5 import javax.mail.Message.RecipientType;
6 import javax.mail.MessagingException;
7 import javax.mail.Session;
8 import javax.mail.Transport;
9 import javax.mail.internet.AddressException;
10 import javax.mail.internet.InternetAddress;
11 import javax.mail.internet.MimeMessage;
12 import javax.mail.internet.MimeMultipart;
13
14 /**
15 * 邮件实体类,封装了有关发送 邮件的方法。
16 * @author xxxxxx
17 *
18 */
19 public class EmailEntity {
20
21 private MimeMessage msg;
22
23 /**
24 * 初始化邮件实体
25 *
26 * @param fromDomin
27 * 发件人邮件服务器域名,如:163.com、qq.com
28 * @param userName
29 * 发件人用户名,如:qmail、20082345
30 * @param password
31 * 发件人密码
32 * @param toAddress
33 * 收件人邮箱地址,如:200712345@qq.com
34 */
35 public EmailEntity(String fromDomin, String userName, String password) {
36 Properties p = new Properties();
37 //设置邮件发送服务器的地址
38 p.setProperty("mail.host", "smtp." + fromDomin);
39 //设置使用权限验证
40 p.setProperty("mail.smtp.auth", "true");
41 //设置用户身份验证凭据
42 Session ses = Session.getDefaultInstance(p, new MyAuthenticator(userName, password));
43 //ses.setDebug(true);//设置是否出现回显信息
44 //创建邮件实体
45 msg = new MimeMessage(ses);
46 try {
47 //设置发件人邮箱地址
48 msg.setFrom(new InternetAddress(userName + "@" + fromDomin));
49 } catch (AddressException e) {
50 e.printStackTrace();
51 } catch (MessagingException e) {
52 e.printStackTrace();
53 }
54 }
55
56 /**
57 * 发送消息
58 *
59 * @param title
60 * 邮件标题
61 * @param content
62 * 邮件正文
63 * @param type
64 * 正文的类型,如:text/html、text/plain
65 * @return
66 */
67 public boolean sendMessage(String toAddress, String title, String content, String type) {
68
69 try {
70 //设置发件人邮箱地址
71 msg.setRecipient(RecipientType.TO, new InternetAddress(toAddress));
72 //设置邮件发送日期
73 msg.setSentDate(new Date());
74 //设置邮件标题
75 msg.setSubject(title);
76 //设置邮件正文
77 msg.setContent(content, type);
78 //开始发送邮件
79 Transport.send(msg);
80 return true;
81 } catch (MessagingException ex) {
82 ex.printStackTrace();
83 return false;
84 }
85 }
86
87 /**
88 * 发送带附件的邮件
89 * @param toAddress 收件人的邮箱地址,如bob@126.com
90 * @param title 邮件标题
91 * @param content 邮件正文,包括附件
92 * @param type 邮件正文的类型
93 * @return
94 */
95 public boolean sendEmailWithAttachment(String toAddress, String title, MimeMultipart content, String type) {
96 try {
97 msg.setRecipient(RecipientType.TO, new InternetAddress(toAddress));
98 msg.setSentDate(new Date());
99 msg.setSubject(title);
100 msg.setContent(content);
101 Transport.send(msg);
102 return true;
103 } catch (MessagingException ex) {
104 ex.printStackTrace();
105 return false;
106 }
107 }
108 }
109
110 //用户身份验证凭据类
111 class MyAuthenticator extends Authenticator {
112
113 private String _userName;
114 private String _password;
115
116 public MyAuthenticator(String userName,String password){
117 this._userName = userName;
118 this._password = password;
119 }
120
121 @Override
122 public PasswordAuthentication getPasswordAuthentication() {
123 //返回使用了用户名和密码的身份验证凭据
124 return new PasswordAuthentication(_userName, _password);
125 }
126 }
经过测试,均测试成功!如下:

使用C#和Java发送邮件(转载)的更多相关文章
- Java-Runoob-高级教程:Java 发送邮件
ylbtech-Java-Runoob-高级教程:Java 发送邮件 1.返回顶部 1. Java 发送邮件 使用Java应用程序发送 E-mail 十分简单,但是首先你应该在你的机器上安装 Java ...
- 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序
如何用javac 和java 编译运行整个Java工程 (转载) http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...
- Java发送邮件初窥
一.背景 最近朋友的公司有用到这个功能,之前对这一块也不是很熟悉,就和他一起解决出现的异常的同时,也初窥一下使用Apache Common Email组件进行邮件发送. 二.Java发送邮件的注意事项 ...
- Java发送邮件,所遇到的常见需求
明天要做关于发送邮件的接口,虽然我之前已用Java Mail做过许多关于邮件的发送.但同事说有点难点,虽我还不知难点在哪,还是要复习下.凡事预则立,不预则废嘛~ 所需的包: Java Mail : 目 ...
- 用java发送邮件(黄海已测试通过)
/** * java发送带附件的邮件 * 周枫 * 2013.8.10 */ package com.dsideal.Util; import javax.mail.*; import javax.m ...
- Java发送邮件(带附件)
实现java发送邮件的过程大体有以下几步: 准备一个properties文件,该文件中存放SMTP服务器地址等参数. 利用properties创建一个Session对象 利用Session创建Mess ...
- 用Java发送邮件
要用Java发送邮件,除过JDK本身的jar包之外,还需要两个额外的jar包:JavaMail和JAF.当然,如果你使用的JavaEE的JDK,那就不用单独去网上下载了,因为JavaEE的JDK中已经 ...
- Java发送邮件时标题和发件人乱码
最近碰到一个问题,Java发送邮件时,查看邮箱结果,发件人及邮件标题正文全部乱码 通过翻阅资料,原因及解决方法如下: // Set Subject: 头字段 message.setSubject(Mi ...
- Java - 31 Java 发送邮件
Java 发送邮件 使用Java应用程序发送E-mail十分简单,但是首先你应该在你的机器上安装JavaMail API 和Java Activation Framework (JAF) . 你可以在 ...
- Java发送邮件--web.xml配置,Java代码配置
前言:我目前总结的使用java发送邮件的方式有两种,分别是在spring框架xml配置文件使用bean标签,另一种方法是把发送功能封装成一个对象,废话不多说上代码, 边看代码边讲解,希望对需要的人能有 ...
随机推荐
- [spring]xml配置文件---节点解释
转载:https://blog.csdn.net/u012099568/article/details/51423837
- spring mvc:练习:表单验证(javaConfig配置和注解)
使用Spring表单标签, 表单验证使用 JSR303 的验证注解,hibernate-validators,提供了使用MessageSource和访问静态资源(如CSS,JavaScript,图片) ...
- C#区块链零基础入门,学习路线图 转
C#区块链零基础入门,学习路线图 一.1分钟短视频<区块链100问>了解区块链基本概念 http://tech.sina.com.cn/zt_d/blockchain_100/ 二.C#区 ...
- cookie、session、sessionStorage、localStorage
Cookie cookie是存储在浏览器端,并且随浏览器的请求一起发送到服务器端的,它有一定的过期时间,到了过期时间自动会消失. 首次设置cookie时是由服务器端发送到浏览器端 ,之后每次浏览器发送 ...
- Python之路,Day9 - 线程、进程、协程和IO多路复用
参考博客: 线程.进程.协程: http://www.cnblogs.com/wupeiqi/articles/5040827.html http://www.cnblogs.com/alex3714 ...
- .pth 文件扩展python环境路径
有时候我们不希望把一个库放到 site-packages 下面,而是更愿意把它保留在原始的工程目录中,方便管理和维护. 通常的做法是在程序启动的时候,往sys.path里面增加这个目录,但是这样做非常 ...
- 身份证真实性校验js、mini ui身份证长度正则验证
身份证号码真实性校验 <input type="text" value="请输入身份证号" id="cards" ><bu ...
- ubuntu 14.04安装c++遇到的问题
这是我在安装c++编译器时遇到的一些问题和解决办法,总结一下希望以后的人能少走弯路 安装g++编译器:sudo apt-get install build-essential build-essent ...
- python文件名不要跟模块名相同,报错AttributeError: 'module' object has no attribute 'Differ'
python中的文件都会生成pyc文件,包括模块也是这样,所以调用模块的时候,实际上会调用模块.pyc文件:在这个前提下,如果将文件名命名成跟模块名一样,在同一目录下就会生成一个跟模块名一样的pyc文 ...
- java中+=详解 a+=b和a=a+b的区别
short a=10; a+=4; System.out.println(a); 1.第一段代码的输出结果为14.执行流程是首先声明变量,判断赋给变量的初始值是否在short类型范围内,如果在则进行强 ...