java发送邮件如何获取状态 比如我发了邮件 ,怎么知道是否发送成功呢 发送邮件后能获取一些状态吗 比

java发送邮件如何获取状态 比如我发了邮件 ,怎么知道是否发送成功呢 发送邮件后能获取一些状态吗 比,第1张

看你获取什么状态了,你可以自己在写程序时,完成一步,就通过print完成当前步骤的语句,以此判断程序运行后进行到了哪儿,同时catch(Exception e),当出错时也能判断出是哪儿出的问题。

但是否发送成功,这个没法完全作出判断,因为发送地址输入错误,和因网络原因没发过去等原因都属于程序判断不了的错误

package comvictor;

import javaioFile;

import javaioIOException;

import javaioInputStream;

import javautilProperties;

import javaxactivationDataHandler;

import javaxactivationDataSource;

import javaxactivationFileDataSource;

import javaxmailBodyPart;

import javaxmailMessage;

import javaxmailMessagingException;

import javaxmailMultipart;

import javaxmailSession;

import javaxmailTransport;

import javaxmailinternetInternetAddress;

import javaxmailinternetMimeBodyPart;

import javaxmailinternetMimeMessage;

import javaxmailinternetMimeMultipart;

import javaxmailinternetMimeUtility;

public class JavaMailWithAttachment {

    private MimeMessage message;

    private Session session;

    private Transport transport;

    private String mailHost = "";

    private String sender_username = "";

    private String sender_password = "";

    private Properties properties = new Properties();

    /

      初始化方法

     /

    public JavaMailWithAttachment(boolean debug) {

        InputStream in = JavaMailWithAttachmentclassgetResourceAsStream("/MailServerproperties");

        try {

            propertiesload(in);

            thismailHost = propertiesgetProperty("mailsmtphost");

            thissender_username = propertiesgetProperty("mailsenderusername");

            thissender_password = propertiesgetProperty("mailsenderpassword");

        } catch (IOException e) {

            eprintStackTrace();

        }

        

        session = SessiongetInstance(properties);

        sessionsetDebug(debug);//开启后有调试信息

        message = new MimeMessage(session);

    }

    /

      发送邮件

      

      @param subject

                 邮件主题

      @param sendHtml

                 邮件内容

      @param receiveUser

                 收件人地址

      @param attachment

                 附件

     /

    public void doSendHtmlEmail(String subject, String sendHtml, String receiveUser, File attachment) {

        try {

            // 发件人

            InternetAddress from = new InternetAddress(sender_username);

            messagesetFrom(from);

            // 收件人

            InternetAddress to = new InternetAddress(receiveUser);

            messagesetRecipient(MessageRecipientTypeTO, to);

            // 邮件主题

            messagesetSubject(subject);

            // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件

            Multipart multipart = new MimeMultipart();

            

            // 添加邮件正文

            BodyPart contentPart = new MimeBodyPart();

            contentPartsetContent(sendHtml, "text/html;charset=UTF-8");

            multipartaddBodyPart(contentPart);

            

            // 添加附件的内容

            if (attachment != null) {

                BodyPart attachmentBodyPart = new MimeBodyPart();

                DataSource source = new FileDataSource(attachment);

                attachmentBodyPartsetDataHandler(new DataHandler(source));

                

                // 网上流传的解决文件名乱码的方法,其实用MimeUtilityencodeWord就可以很方便的搞定

                // 这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码

                //sunmiscBASE64Encoder enc = new sunmiscBASE64Encoder();

                //messageBodyPartsetFileName("=GBKB" + encencode(attachmentgetName()getBytes()) + "=");

                

                //MimeUtilityencodeWord可以避免文件名乱码

                attachmentBodyPartsetFileName(MimeUtilityencodeWord(attachmentgetName()));

                multipartaddBodyPart(attachmentBodyPart);

            }

            

            // 将multipart对象放到message中

            messagesetContent(multipart);

            // 保存邮件

            messagesaveChanges();

            transport = sessiongetTransport("smtp");

            // smtp验证,就是你用来发邮件的邮箱用户名密码

            transportconnect(mailHost, sender_username, sender_password);

            // 发送

            transportsendMessage(message, messagegetAllRecipients());

            Systemoutprintln("send success!");

        } catch (Exception e) {

            eprintStackTrace();

        } finally {

            if (transport != null) {

                try {

                    transportclose();

                } catch (MessagingException e) {

                    eprintStackTrace();

                }

            }

        }

    }

    public static void main(String[] args) {

        JavaMailWithAttachment se = new JavaMailWithAttachment(true);

        Systemoutprintln(se);

        File affix = new File("E:\\测试-testtxt");

      //  File affix =null;

        sedoSendHtmlEmail("##", "###", "####@##com", affix);//

    }

}

注意点:1 jar可能有冲突,如果是demo可以直接应用mailjar

如果是一个工程则要替换javaEE中的mailjar包

2 关于properties配置文件的地址问题

ClassgetResourceAsStream(String path) : path 不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从

ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。

import javaxmail;

import javaxmailinternet;

import javautil;

import javaio;

public class POP3Client {

  public static void main(String[] args) {

    Properties props = new Properties();

    String host = "utopiapolyedu";

    String username = "eharold";

    String password = "mypassword";

    String provider = "pop3";

    try {

      // Connect to the POP3 server

      Session session = SessiongetDefaultInstance(props, null);

      Store store = sessiongetStore(provider);

      storeconnect(host, username, password);

      // Open the folder

      Folder inbox = storegetFolder("INBOX");

      if (inbox == null) {

        Systemoutprintln("No INBOX");

        Systemexit(1);

      }

      inboxopen(FolderREAD_ONLY);

      // Get the messages from the server

      Message[] messages = inboxgetMessages();

      for (int i = 0; i < messageslength; i++) {

        Systemoutprintln("------------ Message " + (i+1)

         + " ------------");

        messages[i]writeTo(Systemout);

      }

      // Close the connection

      // but don't remove the messages from the server

      inboxclose(false);

      storeclose();

    } catch (Exception ex) {

      exprintStackTrace();

    }

  }

}

 

以上就是关于java发送邮件如何获取状态 比如我发了邮件 ,怎么知道是否发送成功呢 发送邮件后能获取一些状态吗 比全部的内容,包括:java发送邮件如何获取状态 比如我发了邮件 ,怎么知道是否发送成功呢 发送邮件后能获取一些状态吗 比、如何用java实现发邮件功能,并有几点注意事项、求一个简单java编写的邮件收发程序,邮件发送程序为smtpsend,邮件接收程序为popreceive。急需,感谢。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9599837.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存