Java发送邮件的几种方式
来源:互联网 发布:got it 编辑:程序博客网 时间:2024/06/10 17:41
最近的一个项目中用到了邮件发送,所以研究了一下。将其总结下来。
要发送邮件就要用到java中的JavaMail,关于JavaMailAPI的详解呢在
(http://blog.csdn.net/imain/article/details/1453677“)中有非常详尽的介绍,我就直接上代码了。
1:使用JavaMail发送邮件
// 1.创建一个程序与邮件服务器会话对象 Session Properties props = new Properties(); props.setProperty("mail.transport.protocol", "SMTP"); props.setProperty("mail.smtp.host", "smtp.163.com"); props.setProperty("mail.smtp.port", "25"); // 指定验证为true props.setProperty("mail.smtp.auth", "true"); props.setProperty("mail.smtp.timeout","1000"); // 验证账号及密码,密码需要是第三方授权码 Authenticator auth = new Authenticator() { public PasswordAuthentication getPasswordAuthentication({ return new PasswordAuthentication("15953185712@163.com", "czxsqm521"); } }; Session session = Session.getInstance(props, auth);// 2.创建一个Message,它相当于是邮件内容Message message = new MimeMessage(session);// 设置发送者message.setFrom(new InternetAddress("15953185712@163.com"));// 设置发送方式与接收者message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(email));// 设置主题message.setSubject("邮件发送测试");// 设置内容message.setContent(emailMsg, "text/html;charset=utf-8");// 3.创建 Transport用于将邮件发送Transport.send(message);
2:我用的是spring框架,spring 封装了一个简单易用的关于邮件发送的工具类JavaMailSenderImpl ,所以可以用JavaMailSenderImpl 来实现邮件发送。
public class MailService { private static final String HOST = "smtp.163.com"; private static final Integer PORT = 25; private static final String USERNAME = "15953185712@163.com"; private static final String PASSWORD = "czxsqm521"; private static final String EMAILFORM = "15953185712@163.com"; private static JavaMailSenderImpl mailSender = createMailSender(); /** * 邮件发送器 * * @return 配置好的工具 */ private static JavaMailSenderImpl createMailSender() { JavaMailSenderImpl sender = new JavaMailSenderImpl(); sender.setHost(HOST); sender.setPort(PORT); sender.setUsername(USERNAME); sender.setPassword(PASSWORD); sender.setDefaultEncoding("Utf-8"); Properties p = new Properties(); p.setProperty("mail.smtp.timeout", "25000"); p.setProperty("mail.smtp.auth", "false"); sender.setJavaMailProperties(p); return sender; } /** * 发送邮件 * * @param to 接受人 * @param subject 主题 * @param html 发送内容 * @throws MessagingException 异常 * @throws UnsupportedEncodingException 异常 */ public static void sendHtmlMail(String to, String subject, String html) throws MessagingException,UnsupportedEncodingException { MimeMessage mimeMessage = mailSender.createMimeMessage(); // 设置utf-8或GBK编码,否则邮件会有乱码 MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8"); messageHelper.setFrom(EMAILFORM, "系统名称"); messageHelper.setTo(to); messageHelper.setSubject(subject); messageHelper.setText(html, true); mailSender.send(mimeMessage); }}
当然这种是硬编码的方式了。也可以写在资源文件中。
资源文件
mailConfig.properties#服务器mailHost=smtp.163.com#端口号mailPort=25#邮箱账号mailUsername=15953185712@163.com#邮箱授权码mailPassword=czxsqm521#时间延迟mailTimeout=25000#发送人mailFrom=15953185712@163.com
获得资源文件内容
public class MailConfig { private static final String PROPERTIES_DEFAULT = "mailConfig.properties"; public static String host; public static Integer port; public static String userName; public static String passWord; public static String emailForm; public static String timeout; public static String personal; public static Properties properties; static{ init(); } /** * 初始化 */ private static void init() { properties = new Properties(); try{ InputStream inputStream = MailConfig.class.getClassLoader().getResourceAsStream(PROPERTIES_DEFAULT); properties.load(inputStream); inputStream.close(); host = properties.getProperty("mailHost"); port = Integer.parseInt(properties.getProperty("mailPort")); userName = properties.getProperty("mailUsername"); passWord = properties.getProperty("mailPassword"); emailForm = properties.getProperty("mailFrom"); timeout = properties.getProperty("mailTimeout"); personal = "墨裔"; } catch(IOException e){ e.printStackTrace(); } }}
发送邮件
public class MailUtil { private static final String HOST = MailConfig.host; private static final Integer PORT = MailConfig.port; private static final String USERNAME = MailConfig.userName; private static final String PASSWORD = MailConfig.passWord; private static final String emailForm = MailConfig.emailForm; private static final String timeout = MailConfig.timeout; private static final String personal = MailConfig.personal; private static JavaMailSenderImpl mailSender = createMailSender(); /** * 邮件发送器 * * @return 配置好的工具 */ private static JavaMailSenderImpl createMailSender() { JavaMailSenderImpl sender = new JavaMailSenderImpl(); sender.setHost(HOST); sender.setPort(PORT); sender.setUsername(USERNAME); sender.setPassword(PASSWORD); sender.setDefaultEncoding("Utf-8"); Properties p = new Properties(); p.setProperty("mail.smtp.timeout", timeout); p.setProperty("mail.smtp.auth", "false"); sender.setJavaMailProperties(p); return sender; } /** * 发送邮件 * * @param to 接受人 * @param subject 主题 * @param html 发送内容 * @throws MessagingException 异常 * @throws UnsupportedEncodingException 异常 */ public static void sendMail(String to, String subject, String html) throws MessagingException,UnsupportedEncodingException { MimeMessage mimeMessage = mailSender.createMimeMessage(); // 设置utf-8或GBK编码,否则邮件会有乱码 MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8"); messageHelper.setFrom(emailForm, personal); messageHelper.setTo(to); messageHelper.setSubject(subject); messageHelper.setText(html, true); mailSender.send(mimeMessage); }}
源代码已经上传,可以下载
https://github.com/wolf521/demo/tree/master/src/main/java/com/example/demo/mail
jar包下载
http://download.csdn.net/download/qq_32371887/10123280
阅读全文
1 0
- Java发送邮件的几种方式
- C# 发送邮件的几种方式
- java 发送邮件的4种方式
- java 发送邮件的4种方式
- java 发送邮件的4种方式
- asp.net中发送邮件的几种方式
- android里发送邮件mail的几种方式
- Java发邮件的几种方式:
- php 发送邮件几种方式
- android邮件发送几种方式
- android邮件发送几种方式
- 用java实现邮件服务的几种方式总结
- 几种不同的邮件发送解决方案
- 几种不同的邮件发送解决方案
- 发送邮件的几种方法
- asp发送邮件的几种方法
- 发送邮件的几种方法
- asp发送邮件的几种方法
- CentOS6.7使用nginx提供静态资源服务,反向代理和负载均衡
- Spring-data JPA初次接触
- Python进阶(五十一)-Flask文件上传提示PermissionError: [Errno 13] Permission denied: 'E:\\IDEA Projects\\Data'
- codeforces——677A——Vanya and Fence
- Residual Squeeze VGG16
- Java发送邮件的几种方式
- Java基础——面向对象的特征
- java使用poi读取excel文档的一种解决方案
- java--HttpClient的使用
- 安卓大图加载-自定义view
- OpenCV学习笔记(12)canny 边缘检测小程序
- unity5 的 standard assets可以单独下载
- Kotlin汇总3-接口,可见作用域,扩展,数据类,密封类
- PostgreSQL中表名、字段名大小写问题