發(fā)郵件怎么發(fā)圖片(發(fā)郵件怎么發(fā))

1、使用jdk自帶的api來實(shí)現(xiàn)郵件發(fā)送,即JavaMail Api來實(shí)現(xiàn)發(fā)送,通過里面的Transport.send()發(fā)送,其中session用于權(quán)限認(rèn)證,具體實(shí)現(xiàn)

用java發(fā)郵件,必須要導(dǎo)入新的包

mail.jar – 發(fā)郵件的核心包

activation.jar – 對(duì)用戶和密碼加密.

在mail.jar中有三個(gè)核心類:

Javax.mail.Session – 是指與郵件服務(wù)器會(huì)話。整個(gè)項(xiàng)目中只要一個(gè)就可以了.

Javax.mail.Message(接口) - 準(zhǔn)備發(fā)送數(shù)據(jù)信息。

MimeMessage - 可以設(shè)置類型的數(shù)據(jù)信息。

Transport – 它擁有一個(gè)方法可以發(fā)送Message。

@TestpublicvoidsendMail()throwsException{//1,聲明properties對(duì)象放信息Properties props =newProperties();//設(shè)置連接哪一臺(tái)服務(wù)器props.setProperty("mail.host","smtp.163.com");//設(shè)置是否認(rèn)證:props.setProperty("mail.smtp.auth","true");//2,聲明用戶名和密碼Authenticator auth =newAuthenticator(){//返回用戶名和密碼對(duì)象@OverrideprotectedPasswordAuthenticationgetPasswordAuthentication(){ PasswordAuthentication pa =newPasswordAuthentication("xxxxx@163.com","123456");returnpa; } };//3,獲取session對(duì)象Session session = Session.getDefaultInstance(props, auth);//設(shè)置session為調(diào)試模式session.setDebug(true);//4,聲明信息MimeMessage mm1 =newMimeMessage(session);//5,設(shè)置發(fā)件人信息Address form =newInternetAddress("xxxxx@163.com"); mm1.setFrom(form);//6,設(shè)置收件人 ,RecipientType:發(fā)送,抄送,密送 類型mm1.setRecipient(RecipientType.TO,newInternetAddress("xxx@qq.com"));//mm1.setRecipient(RecipientType.CC, new InternetAddress(""));//抄送//7,設(shè)置主題mm1.setSubject("拉面學(xué)習(xí)通知"); String cont ="請(qǐng)點(diǎn)擊 官網(wǎng)新聞查看祝您發(fā)財(cái)"; mm1.setContent(cont,"text/html;charset=UTF-8");//8,發(fā)送Transport.send(mm1); }

其中的mimeType可是text/plain純文本。

發(fā)送附件:

@TestpublicvoidsendMailWithFile()throwsException{ Properties ps =newProperties(); ps.setProperty("mail.host","smtp.163.com"); ps.setProperty("mail.smtp.auth","true"); Authenticator auth =newAuthenticator(){@OverrideprotectedPasswordAuthenticationgetPasswordAuthentication(){returnnewPasswordAuthentication("xxx@163.com","xxx."); } }; Session session = Session.getDefaultInstance(ps, auth); session.setDebug(true); MimeMessage msg =newMimeMessage(session); Address address =newInternetAddress("xxx@163.com"); msg.setFrom(address);//發(fā)送給msg.setRecipient(RecipientType.TO,newInternetAddress("xxx@qq.com")); msg.setRecipient(RecipientType.BCC,newInternetAddress("xxx@qq.com"));//密送msg.setRecipient(RecipientType.CC,newInternetAddress("xxx@qq.com"));//抄送msg.setSubject("$激情小視頻*免費(fèi)觀看");//聲明多部件處理MimeMultipart mm =newMimeMultipart(); MimeBodyPart body1 =newMimeBodyPart();//設(shè)置附件DataSource ds1 =newFileDataSource(newFile("./img/a.jpg")); DataHandler dh1 =newDataHandler(ds1); body1.setDataHandler(dh1);//必須設(shè)置名稱body1.setFileName(MimeUtility.encodeText("美女.jpg")); MimeBodyPart body2 =newMimeBodyPart(); DataSource ds2 =newFileDataSource(newFile("./img/b.jpg")); DataHandler dh2 =newDataHandler(ds2); body2.setDataHandler(dh2); body2.setFileName(MimeUtility.encodeText("美女2.jpg")); MimeBodyPart body3 =newMimeBodyPart(); DataSource ds3 =newFileDataSource(newFile("./img/m.mp3")); DataHandler dh3 =newDataHandler(ds3); body3.setDataHandler(dh3); body3.setFileName(MimeUtility.encodeText("小電影.mp3"));//添加body到mmmm.addBodyPart(body1); mm.addBodyPart(body2); mm.addBodyPart(body3); msg.setContent(mm);//設(shè)置發(fā)送日期Calendar c = Calendar.getInstance(); c.add(Calendar.DATE, -5); msg.setSentDate(c.getTime());//發(fā)送Transport.send(msg); }

可以繼續(xù)添加MimeBodyPart 來設(shè)置正文

MimeBodyPart htmlPart = new MimeBodyPart();String cont = "請(qǐng)點(diǎn)擊 官網(wǎng)新聞查看祝您發(fā)財(cái)";htmlPart.setContent(cont, "text/html;charset=UTF-8");

mm.addBodyPart(htmlPart);

2、通過spring自帶的JavaMailSender來實(shí)現(xiàn),JavaMailSender其實(shí)就是對(duì)JavaMail進(jìn)行封裝而來的,通過javaMailSender.send()發(fā)送。具體實(shí)現(xiàn)

1. maven依賴在pom.xml中添加如下依賴:

4.3.6.RELEASE

org.springframework

spring-core

${springframework.version}

org.springframework

spring-context

${springframework.version}

org.springframework

spring-context-support

${springframework.version}

org.springframework

spring-beans

${springframework.version}

javax.mail

mail

1.4.72.applicationContext.xmlapplicationContext.xml

3.測試代碼importcom.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility;import org.junit.Test;import org.junit.runner.RunWith;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.core.io.FileSystemResource;importorg.springframework.mail.SimpleMailMessage;importorg.springframework.mail.javamail.JavaMailSender;importorg.springframework.mail.javamail.MimeMessageHelper;importorg.springframework.test.context.ContextConfiguration;importorg.springframework.test.context.junit4.SpringJUnit4ClassRunner;importjavax.mail.internet.MimeMessage;import java.io.File;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = {"classpath:applicationContext.xml"})public class JavaMailSenderTest {@Autowiredprivate JavaMailSender javaMailSender;@Testpublic void testSimpleTextMail(){ //發(fā)送普通文本郵件SimpleMailMessage mailMessage = new SimpleMailMessage();mailMessage.setFrom("FX_SKY");// 發(fā)送者,可選的mailMessage.setTo("ricky_feng@163.com");//接受者mailMessage.setSubject("測試郵件");//主題mailMessage.setText("Test Email send by javaMailSender!");//郵件內(nèi)容javaMailSender.send(mailMessage);}@Testpublic void testMimeMail() throws Exception { //發(fā)送HTML格式的郵件MimeMessage mimeMessage =javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);helper.setFrom("FX_SKY");helper.setTo("ricky_feng@163.com");helper.setSubject("主題:嵌入靜態(tài)資源");helper.setText("", true);javaMailSender.send(mimeMessage);}@Testpublic void testMimeInlineMail() throws Exception { //發(fā)送HTML格式含圖片的郵件MimeMessage mimeMessage =javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);helper.setFrom("FX_SKY");helper.setTo("ricky_feng@163.com");helper.setSubject("主題:嵌入靜態(tài)資源");helper.setText("", true);FileSystemResource logoFile = new FileSystemResource(new File("logo.jpg"));helper.addInline("logo", logoFile);javaMailSender.send(mimeMessage);}@Testpublic void testAttachmentMail() throws Exception { //發(fā)送含附件的郵件MimeMessage mimeMessage =javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);// 第二個(gè)參數(shù)設(shè)置為true,表示允許添加附件helper.setFrom("FX_SKY");helper.setTo("ricky_feng@163.com");helper.setSubject("發(fā)送含圖片附件的郵件");helper.setText("含有附件的郵件");helper.addAttachment(MimeUtility.encodeText("附件-1.jpg"), new File("E:/attachment1.jpg"));helper.addAttachment(MimeUtility.encodeText("附件-2.jpg"), new File("E:/attachment2.jpg"));javaMailSender.send(mimeMessage);}}模板郵件通常我們使用郵件發(fā)送服務(wù)的時(shí)候,都會(huì)有一些固定的場景,比如重置密碼、注冊(cè)確認(rèn)等,給每個(gè)用戶發(fā)送的內(nèi)容可能只有小部分是變化的。所以,很多時(shí)候我們會(huì)使用模板引擎來為各類郵件設(shè)置成模板,這樣我們只需要在發(fā)送時(shí)去替換變化部分的參數(shù)即可。

Java中常用的模板引擎有FreeMarker和Velocity,下面我們以Velocity為例做演示。

pom.xml 引入velocity 依賴:

org.apache.velocity

velocity

1.7

org.apache.velocity

velocity-tools

2.0

在resources/templates/ 目錄下,創(chuàng)建一個(gè)模板頁面mail.vm:

最后,我們?cè)趩卧獪y試中加入發(fā)送模板郵件的測試用例,代碼如下:@Testpublic void testSendTemplateMail() throws Exception {MimeMessage mimeMessage =mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);helper.setFrom("FX_SKY");helper.setTo("ricky_feng@163.com");helper.setSubject("主題:模板郵件");VelocityContext context = new VelocityContext();context.put("username", "Velocity");context.put("activation_url", "http://www.baidu.com");Template template = ve.getTemplate("templates/mail.vm");StringWriter sw = new StringWriter();template.merge(context, sw);String text = sw.toString();helper.setText(text, true);mailSender.send(mimeMessage);

轉(zhuǎn)載注明出處:華峰博客網(wǎng)

內(nèi)容版權(quán)聲明:除非注明,否則皆為本站原創(chuàng)文章。