2012-01-23 34 views
14

私は運がないとインターネット上の多くのエントリを見ました。Javaメール、複数の添付ファイルを送信できない

import java.io.IOException; 
import java.util.Properties; 

import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.AddressException; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeBodyPart; 
import javax.mail.internet.MimeMessage; 
import javax.mail.internet.MimeMultipart; 

public class MailTest 
{ 

    public static void main(String[] args) throws AddressException, MessagingException, IOException 
    { 
     String host = "***"; 
     String from = "b"; 
     String to = "***"; 

     // Get system properties 
     Properties props = System.getProperties(); 

     // Setup mail server 
     props.put("mail.smtp.host", host); 

     // Get session 
     Session session = Session.getDefaultInstance(props, null); 

     // Define message 
     MimeMessage message = new MimeMessage(session); 
     message.setFrom(new InternetAddress(from)); 
     message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); 
     message.setSubject("Hello JavaMail"); 
     message.setText("Welcome to JavaMail"); 

     // Handle attachment 1 
     MimeBodyPart messageBodyPart1 = new MimeBodyPart(); 
     messageBodyPart1.attachFile("c:/Temp/a.txt"); 

     // Handle attachment 2 
     MimeBodyPart messageBodyPart2 = new MimeBodyPart(); 
     messageBodyPart2.attachFile("c:/Temp/b.txt"); 

     MimeMultipart multipart = new MimeMultipart("related"); 

     multipart.addBodyPart(messageBodyPart1); 
     multipart.addBodyPart(messageBodyPart2); 

     message.setContent(multipart); 

     // Send message 
     Transport.send(message); 
    } 
} 

結果は、私が唯一の添付ファイルを最初に取得することです:

は、ここに私のコードです。

  1. 私は何度もattachFileメソッドの詳細を呼び出してみましたが、その後、それが唯一の最後の添付ファイル
  2. を適用し、私はaddBodyPartのインデックスで遊んでみました:何の助け

私は無地のメッセージと私を確認しません同じ識別子で他のファイルを参照してください。何らかの理由で添付ファイルに記載されていません。

任意の助けをいただければ幸い、 デイブ

答えて

21
Multipart multipart = new MimeMultipart("mixed"); 
for (String str : attachment_PathList) { 
    MimeBodyPart messageBodyPart = new MimeBodyPart(); 
    DataSource source = new FileDataSource(str); 
    messageBodyPart.setDataHandler(new DataHandler(source)); 
    messageBodyPart.setFileName(source.getName()); 
    multipart.addBodyPart(messageBodyPart); 
} 
msg.setContent(multipart); 
Transport.send(msg); 
+0

ありがとうございました! "混ぜ合わせて"そのトリックをしました。 – dbalakirev

+0

私は今それを受け入れることはできません。私は5分待たなければならない... – dbalakirev

+1

plsはこの答えを受け入れる – Kushan

-1

ただ、実際のGmailの資格情報を使用してgmailUsernameとgmailPassを変更。また、あなたの希望する住所を変更することもできます。 ここでは、GmailのSMTP smtpポートをメールの送信に使用しています。独自のメーリングサーバーの詳細で変更できます。

import java.util.*; 

import javax.mail.*; 

import javax.mail.internet.*; 

import javax.activation.*; 

/** 

Author Mridul Chatterjee 

*/ 

import java.util.Properties; 

import javax.mail.Message; 

import javax.mail.MessagingException; 

import javax.mail.PasswordAuthentication; 

import javax.mail.Session; 

import javax.mail.Transport; 

import javax.mail.internet.InternetAddress; 

import javax.mail.internet.MimeMessage; 



public class SendMail { 

public static void main(String[] args) { 

Properties props = new Properties(); 

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.auth”, “true”); 

props.put(”mail.smtp.port”, “465″); 

ArrayList fileNames = new ArrayList(); 

fileNames.add(”C:/Write.txt”); 

fileNames.add(”C:/Write1.txt”); 

fileNames.add(”C:/Write2.txt”); 

fileNames.add(”C:/Write3.txt”); 

fileNames.add(”C:/25148.jpg”); 



Session session = Session.getDefaultInstance(props, 

new javax.mail.Authenticator() { 

protected PasswordAuthentication getPasswordAuthentication() { 

return new PasswordAuthentication(”gmailUsername”,”gmailPass”); 

} 

}); 



try { 



Message message = new MimeMessage(session); 

message.setFrom(new InternetAddress(”[email protected]”)); 

message.setRecipients(Message.RecipientType.TO, 

InternetAddress.parse(”[email protected]”)); 

message.setSubject(”Testing Subject”); 

message.setText(”Dear Mail Crawler,” + 

“nn No spam to my email, please!”); 

    // multipart.addBodyPart(messageBodyPart); 



    // DataSource source = new FileDataSource(filename); 

    // messageBodyPart.setDataHandler(new DataHandler(source)); 

    // messageBodyPart.setFileName(filename); 

     System.out.println(fileNames.size()); 

     Multipart multipart = new MimeMultipart(); 

     BodyPart messageBodyPart = new MimeBodyPart(); 

     for(int i=0;i   { 

       System.out.println(fileNames.get(i)); 





       messageBodyPart = new MimeBodyPart(); 

       DataSource source = new FileDataSource((String)fileNames.get(i)); 

       messageBodyPart.setDataHandler(new DataHandler(source)); 

       messageBodyPart.setFileName((String)fileNames.get(i)); 

       multipart.addBodyPart(messageBodyPart); 

       //message.setContent(multipart); 

      } 



     //multipart.addBodyPart(messageBodyPart); 

     message.setContent(multipart); 



Transport.send(message); 



System.out.println(”Mail Sent Successfully….”); 



} catch (MessagingException e) { 

throw new RuntimeException(e); 

} 

} 

} 
1
try 
    { 
     String host = "smtp.gmail.com"; 
     String from = "sender gmail id"; 
     String pass = "sender password"; 
     Properties props = System.getProperties(); 
     props.put("mail.smtp.starttls.enable", "true"); // added this line 
     props.put("mail.smtp.host", host); 
     props.put("mail.smtp.user", from); 
     props.put("mail.smtp.password", pass); 
     props.put("mail.smtp.port", "587"); 
     props.put("mail.smtp.auth", "true"); 
     String[] to = {"receiver ids"}; // In this array you can add more ids 
     Session session = Session.getDefaultInstance(props, null); 
     MimeMessage message = new MimeMessage(session); 
     message.setFrom(new InternetAddress(from)); 
     InternetAddress[] toAddress = new InternetAddress[to.length]; 
     // To get the array of addresses 
     for(int i=0; i < to.length; i++) 
     { // changed from a while loop 
      toAddress[i] = new InternetAddress(to[i]); 
     } 
     System.out.println(Message.RecipientType.TO); 
     for(int i=0; i < toAddress.length; i++) 
     { 
     // changed from a while loop 
      message.addRecipient(Message.RecipientType.TO, toAddress[i]); 
     } 
     message.setSubject("sending in a group"); 
     message.setText("Welcome to JavaMail"); 
     // set ur text message 
     BodyPart messageBodyPart1 = new MimeBodyPart(); 
     messageBodyPart1.setText("This is message body"); 
     //file path that you want to attatch 
     // you are able to send multipule file simultaneously 
     String filename[] ={"C:\\Documents and Settings\\admin\\Desktop\\imp data\\emil id.txt" ,"C:\\Documents and Settings\\admin\\Desktop\\imp data\\emil id.txt"};//change accordingly 
     Multipart multipart = new MimeMultipart(); 
     multipart.addBodyPart(messageBodyPart1); 
     for(int i=0 ; i<filename.length ; i++) 
     { 
      MimeBodyPart messageBodyPart2 = new MimeBodyPart(); 
      DataSource source = new FileDataSource(filename[i]); 
      messageBodyPart2.setDataHandler(new DataHandler(source)); 
      messageBodyPart2.setFileName(filename[i]); 
      multipart.addBodyPart(messageBodyPart2); 
     } 
     // both part add into maulti part 
     // set message content 
     message.setContent(multipart); 
     // Trans port the message 
     Transport transport = session.getTransport("smtp"); 
     transport.connect(host, from, pass); 
     transport.sendMessage(message, message.getAllRecipients()); 
     transport.close(); 
    } 
    catch(Exception ex) 
    { 
    ex.printStackTrace(); 
    } 
+0

よく見えますが、あなたが何をしたかを説明するコメントを追加できます。 – Beryllium

+0

こんにちは、まずはあなたの注意をくれたことに感謝します。しかし、私はあなたがこのコードを実行していることを知りたいです。何か問題があれば、私はあなたの問題を解決しようとしてください。 –

関連する問題