javamail保存邮件

如何使用javamail 接收含有图片和附件的唷考

参考代码如下:

import javax.mail.*;

import java.util.*;

import java.io.*;

public class ReceiveMail {

//处理任何一种邮件都需要的方法

private void handle(Message msg) throws Exception {

System.out.println(“邮件主题:” + msg.getSubject());

System.out.println(“邮件作者:” + msg.getFrom()[0].toString());

System.out.println(“发送日期:” + msg.getSentDate());

}

//处理文本邮件

private void handleText(Message msg) throws Exception {

this.handle(msg);

System.out.println(“邮件内容:”+msg.getContent());

}

//处理Multipart邮件,包括了保存附件的功能

private static void handleMultipart(Message msg) throws Exception {

String disposition;

BodyPart part;

Multipart mp = (Multipart) msg.getContent();

//Miltipart的数量,用于除了多个part,比如多个附件

int mpCount = mp.getCount();

for (int m = 0; m mpCount; m++) {

this.handle(msg);

part = mp.getBodyPart(m);

disposition = part.getDisposition();

//判断是否有附件

if (disposition != null disposition.equals(Part.ATTACHMENT))

{

//这个方法负责保存附件

saveAttach(part);

} else {

//不是附件,就只显示文本内容

System.out.println(part.getContent());

}

}

}

private static void saveAttach(BodyPart part) throws Exception {

//得到未经处理的附件名字

String temp = part.getFileName();

//除去发送邮件时,对中文附件名编码的头和尾,得到正确的附件名

//(请参考发送邮件程序SendMail的附件名编码部分)

String s = temp.substring(8, temp.indexOf(“?=”));

//文件名经过了base64编码,下面是解码

String fileName = base64Decoder(s);

System.out.println(“有附件:” + fileName);

InputStream in = part.getInputStream();

FileOutputStream writer = new FileOutputStream(new File(

“保存附件的本地路径”+ “\\”+fileName));

byte[] content = new byte[255];

int read = 0;

while ((read = in.read(content)) != -1) {

writer.write(content);

}

writer.close();

in.close();

}

//base64解码

private static String base64Decoder(String s) throws Exception {

sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();

byte[] b = decoder.decodeBuffer(s);

return (new String(b));

}

public static void receive(String receiverMailBoxAddress, String username,String password) {

//本人用的是yahoo邮箱,故接受邮件使用yahoo的pop3邮件服务器

String host = “pop.mail.yahoo.com.cn”;

try {

//连接到邮件服务器并获得邮件

Properties prop = new Properties();

prop.put(“mail.pop3.host”, host);

Session session = Session.getDefaultInstance(prop);

Store store = session.getStore(“pop3”);

store.connect(host, username, password);

Folder inbox = store.getDefaultFolder().getFolder(“INBOX”);

//设置inbox对象属性为可读写,这样可以控制在读完邮件后直接删除该附件

inbox.open(Folder.READ_WRITE);

Message[] msg = inbox.getMessages();

FetchProfile profile = new FetchProfile();

profile.add(FetchProfile.Item.ENVELOPE);

inbox.fetch(msg, profile);

for (int i = 0; i msg.length; i++) {

//标记此邮件的flag标志对象的DELETED位为true,可以在读完邮件后直接删除该附件,具体执行时间是在调用

//inbox.close()方法的时候

msg[i].setFlag(Flags.Flag.DELETED, true);

handleMultipart(msg[i]);

System.out.println(“****************************”);

}

if (inbox != null) {

//参数为true表明阅读完此邮件后将其删除,更多的属性请参考mail.jar的API

inbox.close(true);

}

if (store != null) {

store.close();

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

JavaMail问题,怎样获得发件箱,草稿箱,回收站里面的邮件

获取发件箱、草稿箱、回收站的代码很简单:

我们在获取收件箱的代码是:

Folder folder = store.getFolder(“INBOX”);

但是我们在获取发件箱、与草稿箱时出现异常,这时就与邮件服务器的文件夹有关;

可以这样获取所有的文件夹:

Folder defaultFolder = store.getDefaultFolder();

Folder[] allFolder = defaultFolder.list();

通过调试或者迭代出来文件夹名称再通过找出来的文件夹名称获取发件箱与草稿箱集合:Folder folder = store.getFolder(“这里是迭代找出来的文件夹名称”);

根据获取的文件夹去得到里面的文件,

javamail保存邮件

JavaMail 发送邮件附件的时候,如何把程序中读出来的IO流直接发出去,而不是保存成临时文件

有很多现成的代码啊,你自己实现的吗?

package com.yuyun.test;

import java.io.File;

import java.util.Date;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.BodyPart;

import javax.mail.Message;

import javax.mail.Multipart;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

import javax.mail.internet.MimeUtility;

 

public class OAEmail {

 /**

  * @param args

  */

 public static void main(String[] args)

 {

  InternetAddress[] popAddressList = null; 

  

  String smtpServer = “smtp.163.com”;

  String popServer = “pop.163.com”;

  String SmtpAddress = “bluewens@163.com”;

  String PopAddresslist = “bluewens@126.com”;

  String Subject = “这是一封测试邮件”;

  String Type = “text/html”;

  String messageText = “邮件的内容:hello,world”;

  String[] arrArchievList = new String[4];

  arrArchievList[0] = “c:\\供应商网址.doc”;

  arrArchievList[1] = “c:\\FLEX3.jpg”;

  arrArchievList[2] = “c:\\FLEX4.jpg”;

  arrArchievList[3] = “c:\\FLEX6.jpg”;

  

  boolean sessionDebug = false;

  try

  {

   java.util.Properties props = System.getProperties();  

  

   props.put(“mail.smtp.host”,smtpServer);//存储发送邮件服务器的信息   

   props.put(“mail.smtp.auth”,”true”);//同时通过验证   

   props.put(“mail.transport.protocol”,”smtp”);

   Session   mailSession = Session.getInstance(props);//根据属性新建一个邮件会话   

   

   mailSession.setDebug(sessionDebug);

   

   Message msg = new MimeMessage(mailSession);

   

   // 设定发件人的地址

   msg.setFrom(new InternetAddress(SmtpAddress));

   

   // 设定收信人的地址

   popAddressList = InternetAddress.parse(PopAddresslist,false);

   msg.setRecipients(Message.RecipientType.TO, popAddressList);

   

   // 设定信中的主题

   msg.setSubject(Subject);

   

   // 设定送信的时间

   msg.setSentDate(new Date());

   

   // 是否以附件方式发送邮件

   boolean bolSendByArchieve  = false; 

  

   // 如果有附件,先将由件内容部分存起来

   if (arrArchievList != null   arrArchievList.length 0)

   {

    // 1.保存内容

    MimeMultipart mp = new MimeMultipart();    

    MimeBodyPart mailContentPart = new MimeBodyPart();

    mailContentPart.setContent(messageText,Type + “;charset=GBK”); 

    

    msg.setContent(messageText,Type + “;charset=GBK”);

    // 这句很重要,千万不要忘了

    mp.setSubType(“related”);

    

    mp.addBodyPart(mailContentPart);

     

     

    // 2.保存多个附件

    for (int index = 0;index   arrArchievList.length;index++)

    {

     File file = new File(arrArchievList[index]);

     MimeBodyPart mailArchieve = new MimeBodyPart();

     FileDataSource fds = new FileDataSource(arrArchievList[index]);

     mailArchieve.setDataHandler(new DataHandler(fds));

     mailArchieve.setFileName(MimeUtility.encodeText(fds.getName(),”GBK”,”B”));  

     mp.addBodyPart(mailArchieve);  

    }   

     

    // 3.最后集成内容和附件,一起发送

    msg.setContent(mp);  

   }

   else

     {

    msg.setContent(messageText,Type + “;charset=GBK”); 

   

     }

  

   

   //发送邮件   

   Transport transport; 

    

   msg.saveChanges();//存储邮件信息   

   transport = mailSession.getTransport(“smtp”);   

  //以smtp方式登录邮箱   username填写你的发送邮件的用户名如bluewens,userpwd填写你的密码,如获88888888,即transport.connect(“smtp.163.com”,”bluewens”,”88888888″);

   transport.connect(“smtp.163.com”,”username”,”userpwd”);

   

   transport.sendMessage(msg,msg.getAllRecipients());//发送邮件,其中第二个参数是所有   

   

   //已设好的收件人地址   

   props.put(“pop.163.com”, “false”);

   

   transport.close();     

   

   System.out.println(“邮件已发送成功!”);  

  }

  catch(Exception ex)

  {

   ex.printStackTrace();

  }

  

 }

}

postfix可以设置通过smtp发送的邮件都保存在服务器吗?

postfix 是会记录你发送的邮件,但记录形式可能和你的明文不一样,配置文件里应该有记录发送邮件的参数,看配置文件好好找找

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月25日 23:52:11
下一篇 2024年3月26日 00:00:51

相关推荐

  • javamail已发邮件,java发邮箱

    javaMail如何能保证邮件发送成功 1、JavaMail API按其功能划分通常可分为如下三大类:创建和解析邮件内容的API :Message类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件。 2、TODO Auto-generated catch block out.print(alert(邮件发送失败!);window.history.g…

    2024年5月23日
    5300
  • javamail发送回执,java sendmail

    javaMail判断收到的邮件是否是回执邮件 1、TODO Auto-generated catch block out.print(alert(邮件发送失败!);window.history.go(-1););} 这样就可以判断是否发送成功了。我最近也在做javamail的项目,欢迎来一起讨论。 2、已读回执是指发件人要求收到邮件的人发一封回执给对方,表示…

    2024年5月22日
    3400
  • linux监控服务器并发邮件,linux服务器监听端口

    Linux如何查看服务器的并发数 1、查看httpd进程数:Linux命令:ps -ef | grep httpd | wc -l 返回结果示例:1388 表示服务器能够处理1388个并发请求,这个值服务器可根据负载情况自动调整。 2、LAST_ACK:等待所有分组死掉 使用这上面的命令是可以查看服务器的种连接状态,其中ESTABLISHED 就是并发连接状…

    2024年5月17日
    4200
  • javamailjar包下载,javamail api

    求Java程序打包成可执行jar的工具或者方法 安全性。可以对JAR文件内容加上数字化签名。这样,能够识别签名的工具就可以有选择地为您授予软件安全特权,这是其他文件做不到的,它还可以检测代码是否被篡改过。减少下载时间。 要将项目打包成jar文件,方法很多,可以用Eclipse自带的打包工具Ant打包,也可以用Eclipse的Export生成jar。经过尝试后…

    2024年5月16日
    4200
  • javamail密码,javamail发送html

    javamail中的用户名和密码具体指的是什么 popserver,username,password三者缺一不可。抛开JAVA Mail。 在Java中,可以使用JavaMail API和Java Activation Framework (JAF)来发送电子邮件。 像java.net类那样,JavaMail API通过使用授权者类(Authenticat…

    2024年5月16日
    3900
  • javamail源代码,java sendmail

    JavaMail问题,怎样获得发件箱,草稿箱,回收站里面的邮件 文件被误删除或移动:可能是因为操作不慎或者手误,导致文件被误删除或者移动到其他位置。在这种情况下,可以先检查手机的回收站或者垃圾箱,看看文件是否被放置在这些地方。 答案是肯定的,你只需要修改一下客户端的注册表就可以了。 如果你发送成功的邮件,在“已发送”应该可以查到。如果你一时查不到的话,你退出…

    2024年5月16日
    4700
  • javamail读取邮件,java读取邮件内容

    使用javamail查询收件箱,如何获得邮件的发送时间呢?请详细说明,谢谢… 1、我测试了一下,如果这里设置为空值或者小于当前时间,那么邮件系统会给个当前时间的默认值。如果设置大于当前时间,则邮件显示的发送时间就是设置的时间。你这里并没有对sendDate赋值,取出来的肯定是空。 2、这个问题我来邮件,主题,日期栏之间有条分隔的黑线,你把他拉开一…

    2024年5月14日
    4700
  • javamail接收邮件,java 接收邮件

    Java收发邮件过程中具体的功能是怎么实现的 import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import sun.misc.BASE64Encoder; /** * 该类使用Socket连接到邮件服务器, 并实现了向指…

    2024年5月13日
    4200
  • excel邮件合并日期格式,excel邮件合并日期格式怎么弄

    excel如何邮件合并 输入邮件联系人 先进入到excel表格的软件界面,在这个表格里面依次输入你想要发送邮件的联系人。选中数据 所有数据输入完成后,单击鼠标左键选中这些数据,点击上方的表格样式。 切换到“邮件”菜单下,点击“选择收件人”,接着点击“使用现有列表”,然后打开excel信息表。选择信息表中个人信息所在的工作表名称,接着点击“确定”。 首先制作一…

    2024年5月11日
    4200
  • javamail群发邮件,java批量发送邮件

    java中如何实现公司邮箱发送邮件配置 SMTP协议 用户连上邮件服务器后,要想给它发送一封电子邮件,需要遵循一定的通迅规则,SMTP协议就是用于定义这种通讯规则的。因而,通常我们也把处理用户smtp请求(邮件发送请求)的邮件服务器称之为SMTP服务器。 import java.util.Date; import java.util.HashMap; imp…

    2024年5月11日
    4500

发表回复

登录后才能评论



关注微信