通过 JavaMail 发送的纯文本电子邮件作为附件到达

Plain text email sent via JavaMail arrives as an attachment

我已经编写了一个通过 java 邮件发送的代码 API.Everything 工作正常,但是我发送的纯文本以可下载附件的形式被收件人接收,而不是纯文本消息。

我不知道为什么会这样。 下面给出的是我 运行 时的代码及其输出。

        String toEmail=request.getParameter("email");
        String subject=request.getParameter("subject");
        String message=request.getParameter("message");

        String fromEmail="suyash.tilhari12@gmail.com";
        String username="suyash.tilhari12";
        String password="********";

        mailSender.sendEmail(fromEmail, username, password, toEmail, subject, message);

   public void sendEmail(String fromEmail,String username,String password,
            String toEmail,String subject,String  message) 
    {
        try
        {
        Properties props= System.getProperties();
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", "465");
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.socketFactory.fallback", "false");

        Session mailSession = Session.getDefaultInstance(props, null);
        mailSession.setDebug(true);

        Message mailMessage=new MimeMessage(mailSession);
        mailMessage.setFrom(new InternetAddress(fromEmail));
        mailMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));
        mailMessage.setContent(message, "html/text");
        mailMessage.setSubject(subject);

        Transport transport=mailSession.getTransport("smtp");
        transport.connect("smtp.gmail.com",username,password);
        transport.sendMessage(mailMessage, mailMessage.getAllRecipients());
        }
        catch (Exception ex) {
            Logger.getLogger(MailSenderBean.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}

我用过 Java Mail API ,NetBeans IDE ,Glassfish Server,Enterprise JAVA Bean。

结果如下:

邮件收件人- 你看,简单的短信是附件的形式。

邮件在这个附件中,现在下载并打开-

这是怎么引起的,我该如何解决?

@Suyash:请尝试按照有关此 http://www.tutorialspoint.com/java/java_sending_email.htm link.

的说明进行操作

尝试将内容设置为 "text/html" 而不是 "html/text"

所以它应该看起来像:

 setContent(message, "text/html" );

您遇到的问题与 MIME 内容有关。一切都正确,但那部分不正确。

在那一行

mailMessage.setContent(message, "html/text");

您正在使用 "html/text" 作为无效的 MIME 类型。

您可以在此处找到 MIME 类型列表: http://www.sitepoint.com/web-foundations/mime-types-complete-list/

代码应该是

mailMessage.setContent(message, "text/plain");

mailMessage.setContent(message, "text/plain; charset=UTF-8");

包括字符集信息(ISO-8859-1、UTF-8 等)。

这是只发送一个内容的情况。如果您需要发送不同格式的内容(例如 html 和纯文本)或者您需要发送附件,则必须使用 MimeMultipart