0

javamail api を使用して Android アプリを開発し、添付ファイル付きのメールを送信しています。ただし、添付ファイルがマルチパートの最後のレコードである場合、メールを宛先に配信できないことがわかりました。なぜこれが起こるのかわかりません。この問題について議論している同様の質問はありません。そこで、この質問を開き、ここで専門家からの回答を求めたいと思います。

メールを送信するための私のコードセグメント:

public boolean send(String[] toAddress, String fromAddress, String subject,
                    String body, String filename) throws Exception { 
    Properties props = setProperties(); 

    try{ 
        Session session = Session.getInstance(props, this); 
        session.setDebug(true); 

        MimeMessage msg = new MimeMessage(session); 

        msg.setFrom(new InternetAddress(fromAddress)); 

        InternetAddress[] addressTo = new InternetAddress[toAddress.length]; 
        for(int i=0; i<toAddress.length; i++){ 
            addressTo[i] = new InternetAddress(toAddress[i]); 
        } 

        msg.setRecipients(MimeMessage.RecipientType.TO, addressTo); 
        msg.setSubject(subject); 
        msg.setSentDate(new Date()); 


        BodyPart messageBodyPart1 = new MimeBodyPart(); 
        messageBodyPart1.setText(body); 
        multi.addBodyPart(messageBodyPart1); 

        BodyPart messageBodyPart2 = new MimeBodyPart(); 
        DataSource source = new FileDataSource(filename); 
        messageBodyPart2.setDataHandler(new DataHandler(source)); 
        messageBodyPart2.setFileName("record.csv"); 
        multi.addBodyPart(messageBodyPart2);

        BodyPart messageBodyPart3 = new MimeBodyPart(); 
        messageBodyPart3.setText(""); 
        multi.addBodyPart(messageBodyPart3);

        msg.setContent(multi); 

        Transport transport = session.getTransport("smtp"); 
        transport.connect(host, 25, user, password); 
        transport.sendMessage(msg, msg.getAllRecipients()); 
        transport.close(); 
        return true; 
    } catch (Exception e) { 
        e.printStackTrace(); 
        return false; 
    } 
} 

ログ メッセージが表示されます。

bodypart3 がありません:

08-16 15:09:33.337: I/System.out(6314): EHLO localhost
08-16 15:09:33.345: I/System.out(6314): 250-web.mysmtp.com Hello localhost [202.155.209.250]
08-16 15:09:33.345: I/System.out(6314): 250-SIZE 52428800
08-16 15:09:33.345: I/System.out(6314): 250-PIPELINING
08-16 15:09:33.345: I/System.out(6314): 250-AUTH PLAIN LOGIN
08-16 15:09:33.345: I/System.out(6314): 250-STARTTLS
08-16 15:09:33.345: I/System.out(6314): 250 HELP
08-16 15:09:33.345: I/System.out(6314): DEBUG SMTP: Found extension "SIZE", arg "52428800"
08-16 15:09:33.345: I/System.out(6314): DEBUG SMTP: Found extension "PIPELINING", arg ""
08-16 15:09:33.345: I/System.out(6314): DEBUG SMTP: Found extension "AUTH", arg "PLAIN LOGIN"
08-16 15:09:33.345: I/System.out(6314): DEBUG SMTP: Found extension "STARTTLS", arg ""
08-16 15:09:33.345: I/System.out(6314): DEBUG SMTP: Found extension "HELP", arg ""
08-16 15:09:33.353: I/System.out(6314): DEBUG SMTP: Attempt to authenticate
08-16 15:09:33.353: I/System.out(6314): AUTH LOGIN
08-16 15:09:33.361: I/System.out(6314): 334 VXNlcm5hbWU6
08-16 15:09:33.361: I/System.out(6314): Y2xpZW50YWxlcnRzQHVuaXNlcnZlaXQuY29t
08-16 15:09:33.368: I/System.out(6314): 334 UGFzc3dvcmQ6
08-16 15:09:33.368: I/System.out(6314): cEBzc3cwcmQhIUA=
08-16 15:09:33.384: I/System.out(6314): 235 Authentication succeeded
08-16 15:09:33.392: I/System.out(6314): DEBUG SMTP: use8bit false
08-16 15:09:33.392: I/System.out(6314): MAIL FROM:<me@mysmtp.com>
08-16 15:09:33.415: I/System.out(6314): 250 OK
08-16 15:09:33.415: I/System.out(6314): RCPT TO:<you@mysmtp.com>
08-16 15:09:33.470: I/System.out(6314): 250 Accepted
08-16 15:09:33.470: I/System.out(6314): RCPT TO:<admin@mysmtp.com>
08-16 15:09:33.478: I/System.out(6314): 250 Accepted
08-16 15:09:33.478: I/System.out(6314): DEBUG SMTP: Verified Addresses
08-16 15:09:33.478: I/System.out(6314): DEBUG SMTP:   you@mysmtp.com
08-16 15:09:33.478: I/System.out(6314): DEBUG SMTP:   admin@mysmtp.com
08-16 15:09:33.478: I/System.out(6314): DATA
08-16 15:09:33.486: I/System.out(6314): 354 Enter message, ending with "." on a line by itself
08-16 15:09:33.564: I/System.out(6314): Date: Thu, 16 Aug 2012 15:09:30 +0800 (HKT)
08-16 15:09:33.564: I/System.out(6314): From: me@mysmtp.com
08-16 15:09:33.564: I/System.out(6314): To: you@mysmtp.com, admin@mysmtp.com
08-16 15:09:33.564: I/System.out(6314): Message-ID: <1099216984.1.1345100973553.JavaMail.javamailuser@localhost>
08-16 15:09:33.564: I/System.out(6314): Subject: Record cannot be inserted!
08-16 15:09:33.564: I/System.out(6314): MIME-Version: 1.0
08-16 15:09:33.564: I/System.out(6314): Content-Type: multipart/mixed; 
08-16 15:09:33.564: I/System.out(6314):     boundary="----=_Part_0_1098789192.1345100970404"
08-16 15:09:33.564: I/System.out(6314): 
08-16 15:09:33.571: I/System.out(6314): ------=_Part_0_1098789192.1345100970404
08-16 15:09:33.571: I/System.out(6314): Content-Type: text/plain; charset=us-ascii
08-16 15:09:33.571: I/System.out(6314): Content-Transfer-Encoding: 7bit
08-16 15:09:33.571: I/System.out(6314): 
08-16 15:09:33.571: I/System.out(6314): Please insert manually!
08-16 15:09:33.571: I/System.out(6314): ------=_Part_0_1098789192.1345100970404
08-16 15:09:33.571: I/System.out(6314): Content-Type: application/octet-stream; name=record.csv
08-16 15:09:33.571: I/System.out(6314): Content-Transfer-Encoding: 7bit
08-16 15:09:33.571: I/System.out(6314): Content-Disposition: attachment; filename=record.csv
08-16 15:09:33.571: I/System.out(6314): 
08-16 15:09:33.571: I/System.out(6314): ABC,HK,A,2012/08/16 10:02, ,
08-16 15:09:33.571: I/System.out(6314): 
08-16 15:09:33.571: I/System.out(6314): ------=_Part_0_1098789192.1345100970404--
08-16 15:09:33.571: I/System.out(6314): .
08-16 15:09:33.611: I/System.out(6314): 250 OK id=1T1uCu-0007Fx-Tu
08-16 15:09:33.611: I/System.out(6314): QUIT
08-16 15:09:33.618: I/System.out(6314): 221 web.mysmtp.com closing connection

bodypart3 を持っています:

08-16 15:12:34.353: I/System.out(6876): EHLO localhost
08-16 15:12:34.361: I/System.out(6876): 250-web.mysmtp.com Hello localhost [202.155.209.250]
08-16 15:12:34.361: I/System.out(6876): 250-SIZE 52428800
08-16 15:12:34.361: I/System.out(6876): 250-PIPELINING
08-16 15:12:34.361: I/System.out(6876): 250-AUTH PLAIN LOGIN
08-16 15:12:34.361: I/System.out(6876): 250-STARTTLS
08-16 15:12:34.361: I/System.out(6876): 250 HELP
08-16 15:12:34.368: I/System.out(6876): DEBUG SMTP: Found extension "SIZE", arg "52428800"
08-16 15:12:34.368: I/System.out(6876): DEBUG SMTP: Found extension "PIPELINING", arg ""
08-16 15:12:34.368: I/System.out(6876): DEBUG SMTP: Found extension "AUTH", arg "PLAIN LOGIN"
08-16 15:12:34.368: I/System.out(6876): DEBUG SMTP: Found extension "STARTTLS", arg ""
08-16 15:12:34.368: I/System.out(6876): DEBUG SMTP: Found extension "HELP", arg ""
08-16 15:12:34.368: I/System.out(6876): DEBUG SMTP: Attempt to authenticate
08-16 15:12:34.368: I/System.out(6876): AUTH LOGIN
08-16 15:12:34.384: I/System.out(6876): 334 VXNlcm5hbWU6
08-16 15:12:34.384: I/System.out(6876): Y2xpZW50YWxlcnRzQHVuaXNlcnZlaXQuY29t
08-16 15:12:34.392: I/System.out(6876): 334 UGFzc3dvcmQ6
08-16 15:12:34.392: I/System.out(6876): cEBzc3cwcmQhIUA=
08-16 15:12:34.400: I/System.out(6876): 235 Authentication succeeded
08-16 15:12:34.415: I/System.out(6876): DEBUG SMTP: use8bit false
08-16 15:12:34.415: I/System.out(6876): MAIL FROM:<me@mysmtp.com>
08-16 15:12:34.431: I/System.out(6876): 250 OK
08-16 15:12:34.431: I/System.out(6876): RCPT TO:<you@mysmtp.com>
08-16 15:12:34.470: I/System.out(6876): 250 Accepted
08-16 15:12:34.470: I/System.out(6876): RCPT TO:<admin@mysmtp.com>
08-16 15:12:34.486: I/System.out(6876): 250 Accepted
08-16 15:12:34.486: I/System.out(6876): DEBUG SMTP: Verified Addresses
08-16 15:12:34.486: I/System.out(6876): DEBUG SMTP:   you@mysmtp.com
08-16 15:12:34.486: I/System.out(6876): DEBUG SMTP:   admin@mysmtp.com
08-16 15:12:34.486: I/System.out(6876): DATA
08-16 15:12:34.493: I/System.out(6876): 354 Enter message, ending with "." on a line by itself
08-16 15:12:34.571: I/System.out(6876): Date: Thu, 16 Aug 2012 15:12:32 +0800 (HKT)
08-16 15:12:34.571: I/System.out(6876): From: me@mysmtp.com
08-16 15:12:34.571: I/System.out(6876): To: you@mysmtp.com, admin@mysmtp.com
08-16 15:12:34.571: I/System.out(6876): Message-ID: <1099235248.1.1345101154551.JavaMail.javamailuser@localhost>
08-16 15:12:34.571: I/System.out(6876): Subject: Record cannot be inserted!
08-16 15:12:34.571: I/System.out(6876): MIME-Version: 1.0
08-16 15:12:34.571: I/System.out(6876): Content-Type: multipart/mixed; 
08-16 15:12:34.571: I/System.out(6876):     boundary="----=_Part_0_1098789960.1345101152034"
08-16 15:12:34.571: I/System.out(6876): 
08-16 15:12:34.571: I/System.out(6876): ------=_Part_0_1098789960.1345101152034
08-16 15:12:34.571: I/System.out(6876): Content-Type: text/plain; charset=us-ascii
08-16 15:12:34.571: I/System.out(6876): Content-Transfer-Encoding: 7bit
08-16 15:12:34.571: I/System.out(6876): 
08-16 15:12:34.571: I/System.out(6876): Please insert manually!
08-16 15:12:34.571: I/System.out(6876): ------=_Part_0_1098789960.1345101152034
08-16 15:12:34.571: I/System.out(6876): Content-Type: application/octet-stream; name=record.csv
08-16 15:12:34.571: I/System.out(6876): Content-Transfer-Encoding: 7bit
08-16 15:12:34.571: I/System.out(6876): Content-Disposition: attachment; filename=record.csv
08-16 15:12:34.571: I/System.out(6876): 
08-16 15:12:34.571: I/System.out(6876): ABC,HK,A,2012/08/16 10:02, ,
08-16 15:12:34.571: I/System.out(6876): 
08-16 15:12:34.571: I/System.out(6876): ------=_Part_0_1098789960.1345101152034
08-16 15:12:34.571: I/System.out(6876): Content-Type: text/plain; charset=us-ascii
08-16 15:12:34.571: I/System.out(6876): Content-Transfer-Encoding: 7bit
08-16 15:12:34.571: I/System.out(6876): 
08-16 15:12:34.571: I/System.out(6876): 
08-16 15:12:34.571: I/System.out(6876): ------=_Part_0_1098789960.1345101152034--
08-16 15:12:34.571: I/System.out(6876): .
08-16 15:12:34.587: I/System.out(6876): 250 OK id=1T1uFp-0007Ka-TP
08-16 15:12:34.587: I/System.out(6876): QUIT
08-16 15:12:34.603: I/System.out(6876): 221 web.mysmtp.com closing connection

messageBodyPart3 を削除すると、メールを受信できなくなります。これの原因は何ですか?

4

1 に答える 1

0

その 3 番目の部分は完全に無償であり、何の違いもありません。いや、絶対にあってはならない。サーバーがメッセージをスパムと見なすかどうかを変更しない限り。

いずれにせよ、「受信できない」以上の情報を提供する必要があります。

メッセージは SMTP サーバーによって受け入れられますか?

SMTP サーバーはそれを宛先サーバーに送信しますか?

宛先サーバーはそれをメールボックスに保存しますか?

任意のメール リーダーを使用して、メールボックスでそれを見ることができますか?

于 2012-08-16T06:50:55.600 に答える