使用javaMail Api从Android应用程序发送电子邮件时附件的未知格式类型

时间:2016-02-19 11:28:07

标签: android smtp javamail

我正在尝试开发一个应用程序,其中包含一个用于上传求职者简历的屏幕。我可以看到带有附件的电子邮件已发送到' To' 邮件ID但文档类型被指定为'未知文件类型格式' 。另一件事是因为我使用的是Google Mail提供的功能,所以电子邮件以名称的形式发送已注册的电子邮件ID但不是访客邮件ID。以下是我编写的用于发送电子邮件的代码。请帮助我。谢谢提前。

  System.out.println("TLSEmail Start");

            Properties props = new Properties();
            props.put("mail.smtp.auth", "true");
            //  props.put("mail.smtp.starttls.enable", "true");
            props.put("mail.smtp.host", "smtp.gmail.com");
            props.put("mail.smtp.socketFactory.port", "465");
            props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            props.put("mail.smtp.port", "465");

            //create Authenticator object to pass in Session.getInstance argument
            Authenticator auth = new Authenticator() {
                //override the getPasswordAuthentication method
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(fromEmail, "wpndththyxgofpmt");
                }
            };
          Session session = Session.getInstance(props, auth);

         MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress("ayyapparushi@gmail.com"));
            message.addRecipient(MimeMessage.RecipientType.TO, new InternetAddress(toEmail));

            System.out.println("Mail Check 2");

            message.setSubject(al_JobsList.get(Position).getJobName() + "-" + al_JobsList.get(Position).getJobExp());

            System.out.println("Mail Check 3");
            BodyPart messageBodyPart;
            messageBodyPart = new MimeBodyPart();

            messageBodyPart.setContent(messagepart, "text/html");
            Multipart multipart = new MimeMultipart();
             multipart.addBodyPart(messageBodyPart);

              messageBodyPart=new MimeBodyPart();

              message.setText(messagepart2);


             //  Transport.send(message);


               String file = emailmsg;
               String fileName = name + " resume";
               FileDataSource source = new FileDataSource(file);
               messageBodyPart.setDataHandler(new DataHandler(source));
               // messageBodyPart.attachFile(file);
               messageBodyPart.setFileName(fileName);
               multipart.addBodyPart(messageBodyPart);
               // multipart.addBodyPart(message);

               message.setContent(multipart);
               Transport.send(message);
           }

2 个答案:

答案 0 :(得分:1)

首先清理这些common mistakes

确保您使用的是官方JavaMail for Android

JavaMail(实际上,JAF)只知道几种文件类型。您可能需要为其他类型的文件指定MIME类型。使用MimeBodyPart.attachFile method that allows you to specify the type

使用Gmail(或几乎任何其他电子邮件提供商),您无法以任意用户身份发送邮件。您只能以帐户所有者的身份发送邮件。

答案 1 :(得分:0)

当电子邮件发送给用户时,我找到了关于附件不受支持的文件格式的问题的答案。在移动设备中从文件浏览器中选择文件时,获取路径但未获取文件扩展名.Hence ,在给出文件名时,我们需要附加附加文件的扩展名。因此,当交付时,Google会自动检查文件格式。

    String fileName = name + " resume"+".docx";

这条线解决了我的问题。