前言:項(xiàng)目中要做一個(gè)發(fā)送郵件的功能,在網(wǎng)上搜了一些代碼,說(shuō)的都不是很完善。自己就整理了一個(gè)可以運(yùn)行的項(xiàng)目。需要注意的地方是:如果發(fā)送人的郵箱是qq郵箱,那么需要在 設(shè)置->賬戶里面把√打上。spring里面的
<property name="host">
??? <value>smtp.126.com</value>
?? </property>
要配置成smtp.qq.com
步驟如下:
用spring做一個(gè)javaMail功能。
1、先建一個(gè)項(xiàng)目。java項(xiàng)目和web項(xiàng)目均可。
2、需要引入的jar包有:mail.jar,activation.jar(我用的是maven搭建的項(xiàng)目,在pom.xml中依賴了那兩個(gè)jar包)
3、在MyEclipse的項(xiàng)目里面加入spring的jar包
4、在項(xiàng)目中的 applicationContext-init.xml (名字可以任意改)文件中加入如下代碼:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="
http://www.springframework.org/schema/beans
"
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance
"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
">
<bean id="mailSender" <property name="host">
??? <value>smtp.126.com</value>
?? </property>
?? <property name="javaMailProperties">
??? <props>
???? <prop key="mail.smtp.auth">true</prop>
???? <prop key="mail.smtp.timeout">25000</prop>
??? </props>
?? </property>
?? <property name="username">
??? <value>xiaojunwei_1987</value>
?? </property>
?? <property name="password">
<!--這里的是配置自己郵箱的密碼,這里我輸入的是假的,以*代替了,呵呵要不你們就知道我的郵箱密碼了-->
??? <value>********</value>
?? </property>
</bean>
</beans>
java 代碼: 我自己加的注釋,不一定準(zhǔn)確哦。
package com.techcenter.mail;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessagePreparator;
public class SpringMail {
public static void main(String[] args) throws Exception {
//讀取spring配置文件
??????? ApplicationContext ctx = new ClassPathXmlApplicationContext("
applicationContext-init.xml
");
??????? //強(qiáng)制返回spring郵件發(fā)送器
??????? JavaMailSender sender = (JavaMailSender) ctx.getBean("mailSender");
??????? //創(chuàng)建對(duì)象并初始化
??????? SpringMail springMail = new SpringMail();??????????
??? //測(cè)試發(fā)送只有文本信息的簡(jiǎn)單測(cè)試
??? springMail.sendTextMail(sender);??????
??? //測(cè)試發(fā)送帶附件的郵件
??? springMail.sendMimeMessage(sender);???????
??? }??
??? private void sendTextMail(JavaMailSender sender) throws Exception {
??? //聲明spring的簡(jiǎn)單郵件消息
??????? SimpleMailMessage mail = new SimpleMailMessage();
??????? mail.setTo("
237888386@qq.com
");??????
??????? mail.setFrom("
xiaojunwei_1987@126.com
");
??????? mail.setSubject("test by amigo");
??????? mail.setText("spring Mail的簡(jiǎn)單測(cè)試");
??????? sender.send(mail);??????
??????? System.out.println("成功發(fā)送文本文件!");???????
??? }??
??? private void sendMimeMessage(final JavaMailSender sender) throws Exception {
??????? //附件文件集合
??????? final List files = new ArrayList();
?????? //擴(kuò)展信息介質(zhì)接口,需自己實(shí)現(xiàn)接口中的方法
??????? MimeMessagePreparator mimeMail = new MimeMessagePreparator() {
??????????? public void prepare(MimeMessage mimeMessage) throws MessagingException {
??????????? //設(shè)置接收者信息 ,接收方式:直接發(fā)送,接收地址??????
?????????????? // mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(""));
??????????????? mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("
237888386@qq.com
"));
??????????????? mimeMessage.setFrom(new InternetAddress("
xiaojunwei_1987@126.com
"));
??????????????? mimeMessage.setSubject("Spring發(fā)送帶附件的郵件", "gb2312");???????
??????????????? //多部件的,可以看做一個(gè)郵件容器,包含正文、附件等
??????????????? Multipart mp = new MimeMultipart();??????????????
??????????????? //向Multipart添加正文
??????????????? MimeBodyPart content = new MimeBodyPart();
??????????????? content.setText("內(nèi)含spring郵件發(fā)送的例子,請(qǐng)查收!");??????????????
??????????????? //向MimeMessage添加(Multipart代表正文)
??????????????? mp.addBodyPart(content);
??????????????? //向Multipart添加附件,可以添加多個(gè)附件;
??????????????? String path = System.getProperty("user.dir");
??????????????? System.out.println(path);
??????????
????? // 這里是附件的路徑,自己測(cè)試的時(shí)候可能要改的哦!
??????????????? files.add("e://hehe.txt");
??????????????? files.add(path+"
\\src\\test\\java\\com\\techcenter\\mail\\SpringMail.java
");???
??????????????? Iterator it = files.iterator();
??????????????? //遍歷List,把附件放到郵件容器里面
??????????????? while(it.hasNext()) {
??????????????????? MimeBodyPart attachFile = new MimeBodyPart();
??????????????????? String filename = it.next().toString();
??????????????????? //文件數(shù)據(jù)源
??????????????????? FileDataSource fds = new FileDataSource(filename);
??????????????????? //數(shù)據(jù)處理器
??????????????????? attachFile.setDataHandler(new DataHandler(fds));
??????????????????? //設(shè)置文件名?????????????????
??????????????????? attachFile.setFileName(fds.getName());
??????????????????? mp.addBodyPart(attachFile);
??????????????? }??????????????
??????????????? files.clear();??????????????
??????????????? //向Multipart添加MimeMessage
??????????????? mimeMessage.setContent(mp);
??????????????? mimeMessage.setSentDate(new Date());
??????????? }
??????? };
??????? //發(fā)送帶附件的郵件
??????? sender.send(mimeMail);??????
??????? System.out.println("成功發(fā)送帶附件郵件!");
??? }
}
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
