導航:首頁 > 編程語言 > javamail使用html

javamail使用html

發布時間:2025-09-11 05:04:26

⑴ spring發送html郵件報Could not connect to SMTP host: localhost, port: 25

  1. 本地SMTP虛擬伺服器沒開。--沒開當然連不上

  2. host設置錯誤。

<beanid="mailSender"class="org.springframework.mail.javamail.JavaMailSenderImpl">
<propertyname="host"value="smtp.sina.com"/>
<propertyname="protocol"value="smtp"/>
<propertyname="username"value="xxx"/>
<propertyname="password"value="xxx"/>
<propertyname="javaMailProperties">
<props>
<propkey="mail.smtp.auth">true</prop>
</props>
</property>
</bean>

⑵ 關於javamail讀取中文路徑和文件名亂碼的問題

你的這行代碼attachName=new String(attachName.getBytes("gb2312"),"ISO8859-1");應該修改成attachName=new String(attachName.getBytes("ISO8859-1"),"gb2312");還有就是郵件中文亂碼問題。在界面傳遞時,中文通過一定編碼格式編碼後在傳給另外一個界面,接收界面如果要正確的顯示中文,應該正確的解碼。可以使用jdk1.6提供MimeUtility類。將 FileDataSource fds=new FileDataSource(filename);修改為:
FileDataSource fds=new FileDataSource(MimeUtility.encodeText(filename));這樣的話應該能解決附件亂碼問題。這只是自己膚淺的認識,可能有些地方還有漏洞,往高手看後指點!!
=====================================================================
下面是敝人一段中文處理的代碼,可以做參考
public class Demo3
{
/**
* 復雜郵件含附件+中文附件名_回信地址_友好名稱
* @param args
*/
public static void main(String[] args) throws Exception
{

//配置環境
Properties pros = new Properties();
pros.setProperty("mail.smtp.auth", "true");
pros.setProperty("mail.transport.protocol", "smtp");
Session session = Session.getInstance(pros);
session.setDebug(true);
//創建衛星
Message msg = new MimeMessage(session);
//設置msg的一些信息--發件人、主題、內容..
msg.setFrom(new InternetAddress("\""+MimeUtility.encodeText("超越")+"\" <[email protected]>"));
msg.setRecipients(RecipientType.TO,
InternetAddress.parse(MimeUtility.encodeText("畢老師")+" <[email protected]>,"+MimeUtility.encodeText("王老師")+" <[email protected]>")
);
msg.setReplyTo(InternetAddress.parse("[email protected]"));

MimeMultipart bodyMultipart = new MimeMultipart("mixed");
msg.setContent(bodyMultipart);

MimeBodyPart appurt1 = new MimeBodyPart();
MimeBodyPart appurt2 = new MimeBodyPart();
MimeBodyPart contentPart = new MimeBodyPart();

bodyMultipart.addBodyPart(appurt1);
bodyMultipart.addBodyPart(appurt2);
bodyMultipart.addBodyPart(contentPart);

appurt1.setDataHandler(new DataHandler(new FileDataSource("")));
appurt1.setFileName("");//重要

appurt2.setDataHandler(new DataHandler(new FileDataSource("")));
appurt2.setFileName("");

MimeMultipart contentMultipart = new MimeMultipart("related");
contentPart.setContent(contentMultipart);

MimeBodyPart picPart = new MimeBodyPart();
MimeBodyPart htmlPart = new MimeBodyPart();
contentMultipart.addBodyPart(picPart);
contentMultipart.addBodyPart(htmlPart);

picPart.setDataHandler(new DataHandler(new FileDataSource("")));
picPart.setHeader("Content-Location", "www.sohu.com/log.jpg");
htmlPart.setText("圖片<img src=www.sohu.com/log.jpg/>", "text/html;charset=gbk");

msg.saveChanges();

//創建火箭
Transport transport = session.getTransport();
transport.connect("smtp.sina.com", 25, "[email protected]", "*****");

//火箭發送衛星
transport.sendMessage(msg, InternetAddress.parse("aa,aaa"));

transport.close();
}
}

⑶ javamail能不能解析mbox文件

介紹一下JavaMail的Message
它對應JavaMail的Message對象,一個Message對象又會有多個子對象如MultiPart對象,更特殊的是整個郵件內容為一個大的 MultiPart,然而郵件的正文則在嵌套的一個子MultiPart中,如果不了解這種組織結構,就可能無法正確獲得郵件的正文。此結構如下圖所示:

郵件Message

頭部(主題, 發件人信息等)

MultiPart郵件全部內容, 包含正文和附件

正文 MultiPart

文本正文 text/plain

Content-Type: text/plain;charset="gb2312"

HTML網頁格式 text/html

Content-Type: text/html;charset="gb2312"

附件1

Content-Type: application/octet-stream;
name="String2Java.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="String2Java.jpg"

附件2

Content-Type: application/octet-stream;
name="FoxmailUpdate.log"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="FoxmailUpdate.log"

⑷ JavaMail發送帶圖片的html郵件,OutLook 2007無法顯示圖片,Foxmail正常

你在 javamail 裡面設置附件的時候,需要注意兩個地方:


1)設置 subType 為 related (這個是必須的,否則有些程序會將內置的圖當成附件來處理了)

2) 使用 MimeMultipart 來將各個內容分別 add 進去。


你可以直接參考下面鏈接的內容:

http://stackoverflow.com/questions/2996514/inline-images-in-email-using-javamail


這裡面給你把部分內容直接復制出來了:

MimeMultipartrootContainer=newMimeMultipart();
rootContainer.setSubType("related");
rootContainer.addBodyPart();//notinfocushere
rootContainer.addBodyPart(createInlineImagePart());
...
message.setContent(rootContainer);
message.setHeader("MIME-Version","1.0");
message.setHeader("Content-Type",rootContainer.getContentType());
...
BodyPartcreateInlineImagePart(byte[])throwsMessagingException{
InternetHeadersheaders=newInternetHeaders();
headers.addHeader("Content-Type","image/jpeg");
headers.addHeader("Content-Transfer-Encoding","base64");
MimeBodyPartimagePart=newMimeBodyPart(headers,);
imagePart.setDisposition(MimeBodyPart.INLINE);
imagePart.setContentID("&lt;image&gt;");
imagePart.setFileName("image.jpg");
returnimagePart;

⑸ java 代碼發郵件怎麼添加附件

實現java發送郵件的過程大體有以下幾步:

准備一個properties文件,該文件中存放SMTP伺服器地址等參數。

利用properties創建一個Session對象

利用Session創建Message對象,然後設置郵件主題和正文

利用Transport對象發送郵件

需要的jar有2個:activation.jar和mail.jar發送附件,需要用到Multipart對象。

importjava.io.File;
importjava.io.IOException;
importjava.io.InputStream;
importjava.util.Properties;

importjavax.activation.DataHandler;
importjavax.activation.DataSource;
importjavax.activation.FileDataSource;
importjavax.mail.BodyPart;
importjavax.mail.Message;
importjavax.mail.MessagingException;
importjavax.mail.Multipart;
importjavax.mail.Session;
importjavax.mail.Transport;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeBodyPart;
importjavax.mail.internet.MimeMessage;
importjavax.mail.internet.MimeMultipart;
importjavax.mail.internet.MimeUtility;

{
privateMimeMessagemessage;
privateSessionsession;
privateTransporttransport;

privateStringmailHost="";
privateStringsender_username="";
privateStringsender_password="";

privatePropertiesproperties=newProperties();

/*
*初始化方法
*/
publicJavaMailWithAttachment(booleandebug){
InputStreamin=JavaMailWithAttachment.class.getResourceAsStream("MailServer.properties");
try{
properties.load(in);
this.mailHost=properties.getProperty("mail.smtp.host");
this.sender_username=properties.getProperty("mail.sender.username");
this.sender_password=properties.getProperty("mail.sender.password");
}catch(IOExceptione){
e.printStackTrace();
}

session=Session.getInstance(properties);
session.setDebug(debug);//開啟後有調試信息
message=newMimeMessage(session);
}

/**
*發送郵件
*
*@paramsubject
*郵件主題
*@paramsendHtml
*郵件內容
*@paramreceiveUser
*收件人地址
*@paramattachment
*附件
*/
publicvoiddoSendHtmlEmail(Stringsubject,StringsendHtml,StringreceiveUser,Fileattachment){
try{
//發件人
InternetAddressfrom=newInternetAddress(sender_username);
message.setFrom(from);

//收件人
InternetAddressto=newInternetAddress(receiveUser);
message.setRecipient(Message.RecipientType.TO,to);

//郵件主題
message.setSubject(subject);

//向multipart對象中添加郵件的各個部分內容,包括文本內容和附件
Multipartmultipart=newMimeMultipart();

//添加郵件正文
BodyPartcontentPart=newMimeBodyPart();
contentPart.setContent(sendHtml,"text/html;charset=UTF-8");
multipart.addBodyPart(contentPart);

//添加附件的內容
if(attachment!=null){
BodyPartattachmentBodyPart=newMimeBodyPart();
DataSourcesource=newFileDataSource(attachment);
attachmentBodyPart.setDataHandler(newDataHandler(source));

//網上流傳的解決文件名亂碼的方法,其實用MimeUtility.encodeWord就可以很方便的搞定
//這里很重要,通過下面的Base64編碼的轉換可以保證你的中文附件標題名在發送時不會變成亂碼
//sun.misc.BASE64Encoderenc=newsun.misc.BASE64Encoder();
//messageBodyPart.setFileName("=?GBK?B?"+enc.encode(attachment.getName().getBytes())+"?=");

//MimeUtility.encodeWord可以避免文件名亂碼
attachmentBodyPart.setFileName(MimeUtility.encodeWord(attachment.getName()));
multipart.addBodyPart(attachmentBodyPart);
}

//將multipart對象放到message中
message.setContent(multipart);
//保存郵件
message.saveChanges();

transport=session.getTransport("smtp");
//smtp驗證,就是你用來發郵件的郵箱用戶名密碼
transport.connect(mailHost,sender_username,sender_password);
//發送
transport.sendMessage(message,message.getAllRecipients());

System.out.println("sendsuccess!");
}catch(Exceptione){
e.printStackTrace();
}finally{
if(transport!=null){
try{
transport.close();
}catch(MessagingExceptione){
e.printStackTrace();
}
}
}
}

publicstaticvoidmain(String[]args){
JavaMailWithAttachmentse=newJavaMailWithAttachment(true);
Fileaffix=newFile("c:\測試-test.txt");
se.doSendHtmlEmail("郵件主題","郵件內容","[email protected]",affix);//
}
}
閱讀全文

與javamail使用html相關的資料

熱點內容
什麼app軟體比較好用 瀏覽:266
手機看國外網站很卡怎麼辦 瀏覽:367
雙代號網路圖多個起點節點是什麼 瀏覽:630
10歲學編程適合什麼課 瀏覽:34
js正則表達式獲取圖片地址 瀏覽:881
電腦直播電視app哪個好 瀏覽:243
文件名中最多可以有多少個字元 瀏覽:593
文件夾變成file 瀏覽:799
網站域名多少錢哈爾濱 瀏覽:810
怎麼知道美版燒號蘋果v版是有鎖 瀏覽:178
文件100kb是多少k 瀏覽:905
90版本屬強100計算公式 瀏覽:282
javamail使用html 瀏覽:480
cs6人像教程 瀏覽:313
越獄5s升級ios9 瀏覽:417
數控車怎麼樣只用g0編程 瀏覽:211
工程制圖app哪個好用 瀏覽:453
net鏈接本地資料庫 瀏覽:768
缺氧版本更新 瀏覽:563
文章中的文件名稱用什麼符號 瀏覽:754

友情鏈接