java中javamail发送带附件的邮件实例

mail.java 代码

 代码如下 复制代码
package mail; 
 
import java.util.* ; 
import java.io.* ; 
import javax.mail.* ; 
import javax.mail.internet.* ; 
import javax.activation.* ; 
public class Mail { 
    //定义发件人、收件人、SMTP服务器、用户名、密码、主题、内容等 
    private String displayName; 
    private String to; 
    private String from; 
    private String smtpServer; 
    private String username; 
    private String password; 
    private String subject; 
    private String content; 
    private boolean ifAuth; //服务器是否要身份认证 
    private String filename=""; 
    private Vector file = new Vector(); //用于保存发送附件的文件名的集合 
    
    
    /**
     * 设置SMTP服务器地址
     */ 
    public void setSmtpServer(String smtpServer){ 
        this.smtpServer=smtpServer; 
    } 
    
    /**
     * 设置发件人的地址
     */ 
    public void setFrom(String from){ 
        this.from=from; 
    } 
    /**
     * 设置显示的名称
     */ 
    public void setDisplayName(String displayName){ 
        this.displayName=displayName; 
    } 
    
    /**
     * 设置服务器是否需要身份认证
     */ 
    public void setIfAuth(boolean ifAuth){ 
        this.ifAuth=ifAuth; 
    } 
    
    /**
     * 设置E-mail用户名
     */ 
    public void setUserName(String username){ 
        this.username=username; 
    } 
    
    /**
     * 设置E-mail密码
     */ 
    public void setPassword(String password){ 
        this.password=password; 
    } 
    
    /**
     * 设置接收者
     */ 
    public void setTo(String to){ 
        this.to=to; 
    } 
    
    /**
     * 设置主题
     */ 
    public void setSubject(String subject){ 
        this.subject=subject; 
    } 
    
    /**
     * 设置主体内容
     */ 
    public void setContent(String content){ 
        this.content=content; 
    } 
    
    /**
     * 该方法用于收集附件名
     */ 
    public void addAttachfile(String fname){ 
        file.addElement(fname); 
    } 
    
    public Mail(){ 
        
    } 
    
    /**
     * 初始化SMTP服务器地址、发送者E-mail地址、用户名、密码、接收者、主题、内容
     */ 
    public Mail(String smtpServer,String from,String displayName,String username,String password,String to,String subject,String content){ 
        this.smtpServer=smtpServer; 
        this.from=from; 
        this.displayName=displayName; 
        this.ifAuth=true; 
        this.username=username; 
        this.password=password; 
        this.to=to; 
        this.subject=subject; 
        this.content=content; 
    } 
    
    /**
     * 初始化SMTP服务器地址、发送者E-mail地址、接收者、主题、内容
     */ 
    public Mail(String smtpServer,String from,String displayName,String to,String subject,String content){ 
        this.smtpServer=smtpServer; 
        this.from=from; 
        this.displayName=displayName; 
        this.ifAuth=false; 
        this.to=to; 
        this.subject=subject; 
        this.content=content; 
    } 
 
    /**
     * 发送邮件
     */ 
    public HashMap send(){ 
        HashMap map=new HashMap(); 
        map.put("state", "success"); 
        String message="邮件发送成功!"; 
        Session session=null; 
        Properties props = System.getProperties(); 
        props.put("mail.smtp.host", smtpServer); 
        if(ifAuth){ //服务器需要身份认证 
            props.put("mail.smtp.auth","true");    
            SmtpAuth smtpAuth=new SmtpAuth(username,password); 
            session=Session.getDefaultInstance(props, smtpAuth);  
        }else{ 
            props.put("mail.smtp.auth","false"); 
            session=Session.getDefaultInstance(props, null); 
        } 
        session.setDebug(true); 
        Transport trans = null;   
        try { 
            Message msg = new MimeMessage(session);  
            try{ 
                Address from_address = new InternetAddress(from, displayName); 
                msg.setFrom(from_address); 
            }catch(java.io.UnsupportedEncodingException e){ 
                e.printStackTrace(); 
            } 
            InternetAddress[] address={new InternetAddress(to)}; 
            msg.setRecipients(Message.RecipientType.TO,address); 
            msg.setSubject(subject); 
            Multipart mp = new MimeMultipart(); 
            MimeBodyPart mbp = new MimeBodyPart(); 
            mbp.setContent(content.toString(), "text/html;charset=gb2312"); 
            mp.addBodyPart(mbp);   
            if(!file.isEmpty()){//有附件 
                Enumeration efile=file.elements(); 
                while(efile.hasMoreElements()){  
                    mbp=new MimeBodyPart(); 
                    filename=efile.nextElement().toString(); //选择出每一个附件名 
                    FileDataSource fds=new FileDataSource(filename); //得到数据源 
                    mbp.setDataHandler(new DataHandler(fds)); //得到附件本身并至入BodyPart 
                    mbp.setFileName(fds.getName());  //得到文件名同样至入BodyPart 
                    mp.addBodyPart(mbp); 
                }   
                file.removeAllElements();     
            }  
            msg.setContent(mp); //Multipart加入到信件 
            msg.setSentDate(new Date());     //设置信件头的发送日期 
            //发送信件 
            msg.saveChanges();  
            trans = session.getTransport("smtp"); 
            trans.connect(smtpServer, username, password); 
            trans.sendMessage(msg, msg.getAllRecipients()); 
            trans.close(); 
            
        }catch(AuthenticationFailedException e){    
             map.put("state", "failed"); 
             message="邮件发送失败!错误原因:\n"+"身份验证错误!"; 
             e.printStackTrace();  
        }catch (MessagingException e) { 
             message="邮件发送失败!错误原因:\n"+e.getMessage(); 
             map.put("state", "failed"); 
             e.printStackTrace(); 
             Exception ex = null; 
             if ((ex = e.getNextException()) != null) { 
                 System.out.println(ex.toString()); 
                 ex.printStackTrace(); 
             }  
        } 
        //System.out.println("\n提示信息:"+message); 
        map.put("message", message); 
        return map; 
    } 
    

SmtpAuth.java 代码

 代码如下 复制代码
package mail; 
 
public class SmtpAuth extends javax.mail.Authenticator {  
    private String username,password;  
 
    public SmtpAuth(String username,String password){  
        this.username = username;   
        this.password = password;   
    }  
    protected javax.mail.PasswordAuthentication getPasswordAuthentication() {  
        return new javax.mail.PasswordAuthentication(username,password);  
    }  
}  

存在的问题就是发送到163的邮件全部都带有一个附件的符号,不管有没有发送附件

时间: 2024-09-20 00:54:26

java中javamail发送带附件的邮件实例的相关文章

java中javamail发送带附件的邮件实现方法_java

本文实例讲述了java中javamail发送带附件的邮件实现方法.分享给大家供大家参考.具体分析如下: JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输,JavaMail是可选包,因此如果需要使用的话你需要首先从java官网上下载.目前最新版本是JavaMail1.5.0,下面我们来看看javamail发送带附件的邮件实例 mail.java 代码: 复制代码 代码如下: package mail;

用JavaMail发送带附件的邮件

本文根据Ian F. Darwin的<Java Cookbook>整理而成,原书用整章的文字介绍如何发邮件,可能头绪会比较乱,本文则将其浓缩成一篇文章,力求使完全不懂JavaMail的人,都可以根据文中指示稍作修改,拿来就可以用.如果对其中原理还有不清楚,你可以参考原书.一.首先要用到三个java文件:1.MailConstants.java,properties文件的助记符:///////////////////////////////////////////////////////////

javamail-javaMail发送带附件的邮件时,png的附件可以发送而jpg的图片则会导致发送失败

问题描述 javaMail发送带附件的邮件时,png的附件可以发送而jpg的图片则会导致发送失败 同一个图片的png可以发送,而jpg格式发送失败,定位到代码处如下: // 保存邮件到指定的收件夹中 public boolean copyMessage(Message[] message, String folderName) throws MessagingException { openFolder(folderName, Folder.READ_WRITE);// 打开指定的邮件夹 fol

用JavaMail发送带附件的Email

随着网络应用的不断推广,电子邮件越来越多的被大家使用.虽然我们往往将电子邮件与 Foxmail.Outlook 这样的电子邮件客户端联系起来,但是往往我们也需要自己编程实现发送接收邮件,例如在一个网站注册用户后网站发出的回执mail,或者在网络购物的时候,在完成订单后的几分钟之内发送确认电子邮件.对于这样的需求,我们不能通过已有的邮件客户端而需要自己编写邮件发送或者处理程序.在这里向大家讲解一下如何利用JavaMail来实现邮件的收发. 注意:本文只打算讨论JavaMail收发带附件邮件的一些技

kettle发送带附件的邮件

问题描述 kettle发送带附件的邮件 在用kettle发送带附件的邮件时,邮件能够发送成功,但是邮件里面没有附件,哪位大神给个成功的案例,或者帮忙看看是哪里的问题,谢谢! 解决方案 http://blog.csdn.net/ganggetwo/article/details/50914826 解决方案二: import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Proper

Codeigniter实现发送带附件的邮件

 这篇文章主要介绍了Codeigniter实现发送带附件的邮件的方法,涉及Codeigniter中attach方法的使用技巧,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了Codeigniter实现发送带附件的邮件的方法.分享给大家供大家参考.具体分析如下: attach() 方法允许你的发邮件时带上附件,下面是演示代码 代码如下: $this->load->library('email'); $this->email->from('w3@w3mentor.com'

php简单实现发送带附件的邮件_php技巧

本文实例讲述了php简单实现发送带附件的邮件.分享给大家供大家参考.具体如下: 下面是静态html代码: <html> <head> <title>带附件的邮件发送</title> </head> <body> <form method="post" name="form1" action="sendmail.php" ENCTYPE="multipart/f

Codeigniter实现发送带附件的邮件_php实例

本文实例讲述了Codeigniter实现发送带附件的邮件的方法.分享给大家供大家参考.具体分析如下: attach() 方法允许你的发邮件时带上附件,下面是演示代码 复制代码 代码如下: $this->load->library('email'); $this->email->from('w3@w3mentor.com', 'W3M'); $this->email->subject('Email Test with attachment'); $this->ema

用vbs发送带附件的邮件_vbs

function Send_mail(You_Account,You_Password,Send_Email,Send_Email2,Send_Topic,Send_Body,Send_Attachment)  'code by NetPatch 'VBS发送邮件参数说明 'You_Account:你的邮件帐号 'You_Password:你的邮件密码 'Send_Email: 主要邮件地址 'Send_Email2: 备用邮件地址 'Send_Topic: 邮件主题 'Send_Body: