前言:項目中要做一個發送郵件的功能,在網上搜了一些代碼,說的都不是很完善。自己就整理了一個可以運行的項目。需要注意的地方是:如果發送人的郵箱是qq郵箱,那么需要在 設置->賬戶里面把√打上。spring里面的
<property name="host">
??? <value>smtp.126.com</value>
?? </property>
要配置成smtp.qq.com
步驟如下:
用spring做一個javaMail功能。
1、先建一個項目。java項目和web項目均可。
2、需要引入的jar包有:mail.jar,activation.jar(我用的是maven搭建的項目,在pom.xml中依賴了那兩個jar包)
3、在MyEclipse的項目里面加入spring的jar包
4、在項目中的 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 代碼: 我自己加的注釋,不一定準確哦。
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
");
??????? //強制返回spring郵件發送器
??????? JavaMailSender sender = (JavaMailSender) ctx.getBean("mailSender");
??????? //創建對象并初始化
??????? SpringMail springMail = new SpringMail();??????????
??? //測試發送只有文本信息的簡單測試
??? springMail.sendTextMail(sender);??????
??? //測試發送帶附件的郵件
??? springMail.sendMimeMessage(sender);???????
??? }??
??? private void sendTextMail(JavaMailSender sender) throws Exception {
??? //聲明spring的簡單郵件消息
??????? SimpleMailMessage mail = new SimpleMailMessage();
??????? mail.setTo("
237888386@qq.com
");??????
??????? mail.setFrom("
xiaojunwei_1987@126.com
");
??????? mail.setSubject("test by amigo");
??????? mail.setText("spring Mail的簡單測試");
??????? sender.send(mail);??????
??????? System.out.println("成功發送文本文件!");???????
??? }??
??? private void sendMimeMessage(final JavaMailSender sender) throws Exception {
??????? //附件文件集合
??????? final List files = new ArrayList();
?????? //擴展信息介質接口,需自己實現接口中的方法
??????? MimeMessagePreparator mimeMail = new MimeMessagePreparator() {
??????????? public void prepare(MimeMessage mimeMessage) throws MessagingException {
??????????? //設置接收者信息 ,接收方式:直接發送,接收地址??????
?????????????? // 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發送帶附件的郵件", "gb2312");???????
??????????????? //多部件的,可以看做一個郵件容器,包含正文、附件等
??????????????? Multipart mp = new MimeMultipart();??????????????
??????????????? //向Multipart添加正文
??????????????? MimeBodyPart content = new MimeBodyPart();
??????????????? content.setText("內含spring郵件發送的例子,請查收!");??????????????
??????????????? //向MimeMessage添加(Multipart代表正文)
??????????????? mp.addBodyPart(content);
??????????????? //向Multipart添加附件,可以添加多個附件;
??????????????? String path = System.getProperty("user.dir");
??????????????? System.out.println(path);
??????????
????? // 這里是附件的路徑,自己測試的時候可能要改的哦!
??????????????? 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();
??????????????????? //文件數據源
??????????????????? FileDataSource fds = new FileDataSource(filename);
??????????????????? //數據處理器
??????????????????? attachFile.setDataHandler(new DataHandler(fds));
??????????????????? //設置文件名?????????????????
??????????????????? attachFile.setFileName(fds.getName());
??????????????????? mp.addBodyPart(attachFile);
??????????????? }??????????????
??????????????? files.clear();??????????????
??????????????? //向Multipart添加MimeMessage
??????????????? mimeMessage.setContent(mp);
??????????????? mimeMessage.setSentDate(new Date());
??????????? }
??????? };
??????? //發送帶附件的郵件
??????? sender.send(mimeMail);??????
??????? System.out.println("成功發送帶附件郵件!");
??? }
}
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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