发送html格式的邮件
使用phplist系统给搜狐和新浪的邮箱发送html格式的邮件,邮件能够接收到并正常显示出来,但是,邮件还把html格式邮件里的文字和超链接都提取并显示了出来,为什么会出...
使用phplist系统给搜狐和新浪的邮箱发送html格式的邮件,邮件能够接收到并正常显示出来,但是,邮件还把html格式邮件里的文字和超链接都提取并显示了出来,为什么会出现这样的情况?使用163和qq邮件就没有出现这样的情况,大家知道这个原因能给指点一下吗?谢谢!
展开
1个回答
展开全部
发送html格式的邮件void jButton8_actionPerformed(ActionEvent e) {
try
{//此段代码用来发送带有html信息的邮件
Properties props = new Properties();
Authenticator auth = new Email_Autherticator();
props.put( "mail.smtp.host ",host);
props.put( "mail.smtp.auth ", "true ");
Session session = Session.getDefaultInstance(props,auth);
MimeMessage message = new MimeMessage(session);
//设置邮件正文
String htmltext= " <h1> hello </h1> "+ " <a href=\ " http://www.sina.com.cn\ " target=\ "_blank\ "> click me please! </a> ";
message.setContent(htmltext, "text/html ");//text/plain设置邮件的格式因为是带有html文档的,所以用text/html格式
message.setSubject(mail_subject);
// message.setText(mail_body);在使用message.setContent()时候,好象不能用message.setText()
message.setHeader(mail_head_name,mail_head_value);
message.setSentDate(new Date());
Address address = new InternetAddress(mail_from, "sunxiaoming ");
message.setFrom(address);
Address toAddress = new InternetAddress(mail_to);
message.addRecipient(Message.RecipientType.TO,toAddress);
Transport.send(message);
System.out.println( "send ok! ");
}
catch(Exception ex)
{
System.out.println( "faild "+ex);
}
}
void jButton9_actionPerformed(ActionEvent e) {
try
{//此段代码用来发送带有图片的邮件
String file = "./20020423/test.gif ";
Properties props = new Properties();
Authenticator auth = new Email_Autherticator();
props.put( "mail.smtp.host ",host);
props.put( "mail.smtp.auth ", "true ");
Session session = Session.getDefaultInstance(props,auth);
MimeMessage message = new MimeMessage(session);
message.setSubject( "Embedded Image ");
Address address = new InternetAddress(mail_from, "sunxiaoming ");
message.setFrom(address);
Address toAddress = new InternetAddress(mail_to);
message.addRecipient(Message.RecipientType.TO,toAddress);
message.setHeader(mail_head_name,mail_head_value);
message.setSentDate(new Date());
BodyPart messageBodyPart = new MimeBodyPart();
String htmlText = " <h1> <hello> </h1> "+ " <img src=\ "cid:memememe\ "> ";//加入图片
messageBodyPart.setContent(htmlText, "text/html ");
//原理同发送附件一样,将邮件看成有多个部分组成的,先设置每一个部分,然后再全部将它们合起来即可。
//Create a related multi-part to combine the parts
MimeMultipart multipart = new MimeMultipart( "related ");
multipart.addBodyPart(messageBodyPart);
//Create part for the image
messageBodyPart = new MimeBodyPart();
//Fetch the image and associate to part
DataSource fds = new FileDataSource(file);
messageBodyPart.setDataHandler(new DataHandler(fds));
messageBodyPart.setHeader( "Content-ID ", "memememe ");
//Add part to multi-part
multipart.addBodyPart(messageBodyPart);
//Associate multi-part with message
message.setContent(multipart);
Transport.send(message);
System.out.println( "send ok! ");
}
catch(Exception ex)
{
System.out.println( "faild "+ex);
}
}
void jButton7_actionPerformed(ActionEvent e) {
try
{//该程序用来接受带有html信息的邮件
Properties props = System.getProperties();
Authenticator auth = new Email_Autherticator();
props.put( "mail.smtp.host ",host);
props.put( "mail.smtp.auth ", "true ");
Session session = Session.getDefaultInstance(props,auth);
Store store = session.getStore( "pop3 ");
store.connect(host,username,password);
//After connecting to the Store,you can get a Folder,which must be opened before you can read messages from it:
Folder folder = store.getFolder( "INBOX ");
folder.open(Folder.READ_WRITE);
Message message[] = folder.getMessages();
for (int i=0,n=message.length;i <n;i++)
// for (int i=0,n=1;i <n;i++)//only one letter received from inbox //for debug
{
String out_from_person = ((InternetAddress)message[i].getFrom()[0]).getPersonal();
String out_from_address = ((InternetAddress)message[i].getFrom()[0]).getAddress();
System.out.println( "From: "+out_from_person+ "\t ");
System.out.println( "Address: "+out_from_address+ "\t ");
String out_subject = message[i].getSubject();
System.out.println( "Subject: "+out_subject+ "\t ");
//获取邮件的信息,并且对其每一部分进行操作
Part messagePart = message[i];
Object out_content = messagePart.getContent();
if (out_content instanceof Multipart)
{
messagePart = ((Multipart)out_content).getBodyPart(0);
System.out.println( "[ Multipart Message ] ");
}
String out_content_type = messagePart.getContentType();
System.out.println( "CONTENT: "+out_content_type);
jEditorPane1.setText( " ");//将其显示在jEditorPanel上
jEditorPane1.setContentType( "text/html ");
jEditorPane1.setText((String)out_content);
jEditorPane1.setEditable(false);
/*
if (out_content_type.startsWith( "text/plain ") || out_content_type.startsWith( "text/html "))
{
InputStream ipstm = messagePart.getInputStream();
BufferedReader bufreader = new BufferedReader(new InputStreamReader(ipstm));
String thisLine = bufreader.readLine();
while (thisLine != null)
{
System.out.println( "thisLine: "+thisLine);
thisLine = bufreader.readLine();
}
}
*/
System.out.println( "------------------------------------------------------------ ");
message[i].setFlag(Flags.Flag.DELETED,true);
}
folder.close(true);
store.close();
}
catch(Exception ej2)
{
System.out.println(ej2);
}
}
try
{//此段代码用来发送带有html信息的邮件
Properties props = new Properties();
Authenticator auth = new Email_Autherticator();
props.put( "mail.smtp.host ",host);
props.put( "mail.smtp.auth ", "true ");
Session session = Session.getDefaultInstance(props,auth);
MimeMessage message = new MimeMessage(session);
//设置邮件正文
String htmltext= " <h1> hello </h1> "+ " <a href=\ " http://www.sina.com.cn\ " target=\ "_blank\ "> click me please! </a> ";
message.setContent(htmltext, "text/html ");//text/plain设置邮件的格式因为是带有html文档的,所以用text/html格式
message.setSubject(mail_subject);
// message.setText(mail_body);在使用message.setContent()时候,好象不能用message.setText()
message.setHeader(mail_head_name,mail_head_value);
message.setSentDate(new Date());
Address address = new InternetAddress(mail_from, "sunxiaoming ");
message.setFrom(address);
Address toAddress = new InternetAddress(mail_to);
message.addRecipient(Message.RecipientType.TO,toAddress);
Transport.send(message);
System.out.println( "send ok! ");
}
catch(Exception ex)
{
System.out.println( "faild "+ex);
}
}
void jButton9_actionPerformed(ActionEvent e) {
try
{//此段代码用来发送带有图片的邮件
String file = "./20020423/test.gif ";
Properties props = new Properties();
Authenticator auth = new Email_Autherticator();
props.put( "mail.smtp.host ",host);
props.put( "mail.smtp.auth ", "true ");
Session session = Session.getDefaultInstance(props,auth);
MimeMessage message = new MimeMessage(session);
message.setSubject( "Embedded Image ");
Address address = new InternetAddress(mail_from, "sunxiaoming ");
message.setFrom(address);
Address toAddress = new InternetAddress(mail_to);
message.addRecipient(Message.RecipientType.TO,toAddress);
message.setHeader(mail_head_name,mail_head_value);
message.setSentDate(new Date());
BodyPart messageBodyPart = new MimeBodyPart();
String htmlText = " <h1> <hello> </h1> "+ " <img src=\ "cid:memememe\ "> ";//加入图片
messageBodyPart.setContent(htmlText, "text/html ");
//原理同发送附件一样,将邮件看成有多个部分组成的,先设置每一个部分,然后再全部将它们合起来即可。
//Create a related multi-part to combine the parts
MimeMultipart multipart = new MimeMultipart( "related ");
multipart.addBodyPart(messageBodyPart);
//Create part for the image
messageBodyPart = new MimeBodyPart();
//Fetch the image and associate to part
DataSource fds = new FileDataSource(file);
messageBodyPart.setDataHandler(new DataHandler(fds));
messageBodyPart.setHeader( "Content-ID ", "memememe ");
//Add part to multi-part
multipart.addBodyPart(messageBodyPart);
//Associate multi-part with message
message.setContent(multipart);
Transport.send(message);
System.out.println( "send ok! ");
}
catch(Exception ex)
{
System.out.println( "faild "+ex);
}
}
void jButton7_actionPerformed(ActionEvent e) {
try
{//该程序用来接受带有html信息的邮件
Properties props = System.getProperties();
Authenticator auth = new Email_Autherticator();
props.put( "mail.smtp.host ",host);
props.put( "mail.smtp.auth ", "true ");
Session session = Session.getDefaultInstance(props,auth);
Store store = session.getStore( "pop3 ");
store.connect(host,username,password);
//After connecting to the Store,you can get a Folder,which must be opened before you can read messages from it:
Folder folder = store.getFolder( "INBOX ");
folder.open(Folder.READ_WRITE);
Message message[] = folder.getMessages();
for (int i=0,n=message.length;i <n;i++)
// for (int i=0,n=1;i <n;i++)//only one letter received from inbox //for debug
{
String out_from_person = ((InternetAddress)message[i].getFrom()[0]).getPersonal();
String out_from_address = ((InternetAddress)message[i].getFrom()[0]).getAddress();
System.out.println( "From: "+out_from_person+ "\t ");
System.out.println( "Address: "+out_from_address+ "\t ");
String out_subject = message[i].getSubject();
System.out.println( "Subject: "+out_subject+ "\t ");
//获取邮件的信息,并且对其每一部分进行操作
Part messagePart = message[i];
Object out_content = messagePart.getContent();
if (out_content instanceof Multipart)
{
messagePart = ((Multipart)out_content).getBodyPart(0);
System.out.println( "[ Multipart Message ] ");
}
String out_content_type = messagePart.getContentType();
System.out.println( "CONTENT: "+out_content_type);
jEditorPane1.setText( " ");//将其显示在jEditorPanel上
jEditorPane1.setContentType( "text/html ");
jEditorPane1.setText((String)out_content);
jEditorPane1.setEditable(false);
/*
if (out_content_type.startsWith( "text/plain ") || out_content_type.startsWith( "text/html "))
{
InputStream ipstm = messagePart.getInputStream();
BufferedReader bufreader = new BufferedReader(new InputStreamReader(ipstm));
String thisLine = bufreader.readLine();
while (thisLine != null)
{
System.out.println( "thisLine: "+thisLine);
thisLine = bufreader.readLine();
}
}
*/
System.out.println( "------------------------------------------------------------ ");
message[i].setFlag(Flags.Flag.DELETED,true);
}
folder.close(true);
store.close();
}
catch(Exception ej2)
{
System.out.println(ej2);
}
}
追问
谢谢你的回答,但是我想问的是为什么搜狐和新浪的邮箱在打开html格式的邮件时,还要把html里的文字和超链接都显示一遍,其他的邮箱都能正常显示没有出现上面的问题。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询