sunfruit[请访问http://www.fruitres.cn]

--我相信JAVA能走得更远 QQ:316228067

[原创]用JAVAMAIL发送邮件的一个简单例子

    --sunfruit

    写了一个收发邮件的应用程序[在列表里面可以看到]但是毕竟有些复杂,关键部分其实也就是几行代码,为了大家使用方便,我把发送邮件的代码单独拿了出来,并且分为发送附件/不发送附件两个方法,便于大家查看,只是什么设计啦,编程思想啦,等等就谈不到了,呵呵,大家将就吧

    JDK版本
        1.4.x
    其   他
        JAVAMAIL相关包
    功能简介:
        简单的邮件发送功能,可以发送附件

    源代码如下

import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.util.*;
import java.util.*;
import java.text.*;
import java.io.*;
public class SendMail
{
    //传入的参数有密码、姓名、谁发、发给谁、主题、正文内容、smtp地址、附件文件路径、附件的新文件名、发送类型(text/html)
    //发送邮件主函数
    public String sendmail(int myport,String password,String username,String myfrom,String myto,String mysubject,String mytext,String mysmtp,String[] filepath,String[] newfilename,String htmlandtext)
    {
            try{
                int indexstr=0;
                if (filepath[0]!=null && !filepath[0].equals(""))
                    indexstr=1;
                    //替换字符串
               //     jbemail myjbemail=new jbemail();
               //     filepath=myjbemail.myreplace(filepath,"\\","\\\\");
               //     System.out.println("附件地址"+filepath+"服务器地址"+mysmtp+mysmtp.length());
                    //Properties props = new Properties();
                Properties props = System.getProperties();
                Session sendMailSession;
                Store store;  //收邮件时使用
                Transport transport;//发邮件时使用
                props.put("mail.smtp.host",mysmtp);
                props.put("mail.smtp.auth","true");
                SmtpAuthenticator sa=new SmtpAuthenticator(username,password);
                sendMailSession = Session.getInstance(props,sa);
                //sendMailSession = Session.getInstance(props,null);
                sendMailSession.setDebug(true);

                MimeMessage newMessage = new MimeMessage(sendMailSession);
                newMessage.setFrom(new InternetAddress(myfrom));
                newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(myto));
                //设定邮件格式
                newMessage.setSentDate(new Date());
                System.out.println(htmlandtext+"邮件正文格式");
                Multipart multipart = new MimeMultipart();
                if (htmlandtext.equals("text"))
                {
                    //获得文本格式的邮件

                    newMessage.setSubject(mysubject);
                    BodyPart messageBodyPart = new MimeBodyPart();
                    messageBodyPart.setText(mytext);
                    multipart.addBodyPart(messageBodyPart);
                }
                else if(htmlandtext.equals("html"))
                {
                    //设置邮件内容,将邮件body部分转化为HTML格式
                    newMessage.setSubject(mysubject,"gb2312");
                    BodyPart messageBodyPart = new MimeBodyPart();
                    messageBodyPart.setDataHandler(new DataHandler(mytext,"text/html;charset=gb2312"));
                    multipart.addBodyPart(messageBodyPart);
                }
                if (indexstr>0)
                {

                    for(int i=0;i                    {
                        if (newfilename[i]!=null)
                        {
                            //创建BodyPart对象以便获得附件
                            BodyPart messageBodyPart = new MimeBodyPart();
                            System.out.println("附件地址"+filepath[i]);
                            DataSource source = new FileDataSource(filepath[i]);
                            messageBodyPart.setDataHandler(new DataHandler(source));
                            messageBodyPart.setFileName(newfilename[i]);
                            multipart.addBodyPart(messageBodyPart);
                        }
                    }
                }
                //将正文和附件添加到邮件中
                newMessage.setContent(multipart);
                newMessage.saveChanges();
                //transport = sendMailSession.getStore("pop3");
                transport = sendMailSession.getTransport("smtp");
                transport.connect(mysmtp,myport,username,password);
                //transport.connect();
                transport.send(newMessage,newMessage.getAllRecipients());
                System.out.println("成功发送到"+myto);
                return "ok";
        }
        catch(MessagingException m)
        {
                System.out.println(m.toString()+"失败");
                return myto;
        }
    }
    //不含发送附件的函数
    //传入的参数有port地址、密码、姓名、谁发、发给谁、主题、正文内容、smtp地址、发送类型(text/html)
    public String sendmail(String mailPathlog,int myport,String password,String username,String myfrom,String myto,String mysubject,String mytext,String mysmtp,String htmlandtext)
    {
            try{
                //解码
                mysubject=java.net.URLDecoder.decode(mysubject);
                    //Properties props = new Properties();
                Properties props = System.getProperties();
                Session sendMailSession;
                Store store;  //收邮件时使用
                Transport transport;//发邮件时使用
                props.put("mail.smtp.host",mysmtp);
                props.put("mail.smtp.auth","true");
                SmtpAuthenticator sa=new SmtpAuthenticator(username,password);
                //身份验证
                sendMailSession = Session.getInstance(props,sa);
                //sendMailSession = Session.getInstance(props,null);
                sendMailSession.setDebug(true);
                MimeMessage newMessage = new MimeMessage(sendMailSession);
                try
                {
                  newMessage.setFrom(new InternetAddress(myfrom,"法律之星"));
                  newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(myto));
                }
                catch(java.io.UnsupportedEncodingException ex)
                {
                   System.out.println(ex.toString());
                }
                //设定邮件格式
                newMessage.setSentDate(new Date());
                System.out.println(htmlandtext+"邮件正文格式");
                Multipart multipart = new MimeMultipart();
                if (htmlandtext.equals("text"))
                {
                    //获得文本格式的邮件

                    newMessage.setSubject(mysubject);
                    BodyPart messageBodyPart = new MimeBodyPart();
                    messageBodyPart.setText(mytext);
                    multipart.addBodyPart(messageBodyPart);
                }
                else if(htmlandtext.equals("html"))
                {
                    //设置邮件内容,将邮件body部分转化为HTML格式
                    newMessage.setSubject(mysubject,"gb2312");
                    BodyPart messageBodyPart = new MimeBodyPart();
                    messageBodyPart.setDataHandler(new DataHandler(mytext,"text/html;charset=gb2312"));
                    multipart.addBodyPart(messageBodyPart);
                }
                //将正文添加到邮件中
                newMessage.setContent(multipart);
                newMessage.saveChanges();
                //transport = sendMailSession.getStore("pop3");
                transport = sendMailSession.getTransport("smtp");
                transport.connect(mysmtp,myport,username,password);
                //transport.connect();
                transport.send(newMessage,newMessage.getAllRecipients());
                System.out.println("成功发送到"+myto+mytext);
                return "ok";
        }
        catch(MessagingException m)
        {
                System.out.println(m.toString()+"失败");
                //生成当前日期
                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
                Date dateTime= new Date();
                String sDateTime=dateFormat.format(dateTime);
                //生成日志文件
                try
                {
                    File filelog=new File(mailPathlog+"\\"+"mainlog.txt");
                    BufferedWriter out2=new BufferedWriter(new FileWriter(filelog.getPath(),true));
                    String newline = System.getProperty("line.separator");
                    out2.write(sDateTime+"/"+mysmtp+"/"+myfrom+"/"+myto+"/"+m.toString()+"/"+newline);
                    out2.close();
                }
                catch (IOException ex)
                {
                    System.out.println(ex.toString());
                }
                return myto;
        }
    }
    class SmtpAuthenticator extends Authenticator
    {
        //SMTP身份验证
        public SmtpAuthenticator(String username,String password)
        {
            this.username=username;
            this.password=password;
        }
        public PasswordAuthentication getPasswordAuthentication()
        {
            return new  PasswordAuthentication(this.username,this.password);
        }
        String username=null;
        String password=null;
    }
}

posted on 2006-02-19 18:03 sunfruit 阅读(1686) 评论(4)  编辑  收藏 所属分类: JAVA SE & EE

评论

# re: [原创]用JAVAMAIL发送邮件的一个简单例子 2007-12-01 07:34 ghjk

chinos putos

y ojetes

deberian de publicar algo mas claro

esto no se entiende nada  回复  更多评论   

# re: [原创]用JAVAMAIL发送邮件的一个简单例子 2007-12-01 07:36 ghjk

邮件例程-JavaMail-发送HTML邮件
邮件例程-JavaMail-发送HTML邮件
邮件例程-JavaMail-发送HTML邮件
邮件例程-JavaMail-发送HTML邮件
邮件例程-JavaMail-发送HTML邮件   回复  更多评论   

# re: [原创]用JAVAMAIL发送邮件的一个简单例子[未登录] 2011-06-15 13:21 wo

sdasd  回复  更多评论   

# re: [原创]用JAVAMAIL发送邮件的一个简单例子[未登录] 2011-06-15 13:22 wo

asd  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: