2012-07-10 3 views
0

Processing에서 독립형 애플리케이션을 작성 중이며 JavaMail을 통해 FB 페이지 타임 라인에 스케치 스크린 샷을 게시해야합니다. 그래서 나는이 쓴 : 내가받는 사람으로 내 Gmail 이메일을 쓸 때이메일을 통해 사진으로 상태를 업데이트하고 있습니다. (JavaMail)

이제
void sendMail() { 

    String host="smtp.gmail.com"; 
    Properties props=new Properties(); 

    props.put("mail.transport.protocol", "smtp"); 
    props.put("mail.smtp.host", host); 
    props.put("mail.smtp.port", "587"); 
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.smtp.starttls.enable","true"); 

    Session session = Session.getDefaultInstance(props, new Auth()); 

    try 
    { 

    MimeMessage message = new MimeMessage(session); 

    message.setFrom(new InternetAddress("[email protected]", "xxxxx")); 

    message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected]", false)); 


    message.setSubject("ok"); 

    BodyPart mbp = new MimeBodyPart(); 
    DataSource fds = new FileDataSource(file); 
    mbp.setDataHandler(new DataHandler(fds)); 
    mbp.setFileName("screen.png"); 
    Multipart mp = new MimeMultipart(); 
    mp.addBodyPart(mbp); 
    message.setContent(mp); 
    message.setSentDate(new Date()); 

    Transport.send(message); 
    println("Mail sent!"); 
    } 
    catch(Exception e) 
    { 
    println(e); 
    } 
} 

이 - 방법은 완벽하게 작동합니다 (I는 제목과 첨부 된 사진 만 수신) 만을 내 FB 페이지 전자 메일을 사용하는 경우 - 내 일정에 제목 만 표시되며 사진이 없습니다.

나는 PHP로 이전과 같은 일을 해냈다. 어쩌면 내가 놓친 것일까 요?

당신은 정확히 한 부분으로 다중 메시지를 만들

답변

1

글쎄, 나는 원래 메시지의 내용에 모습이 나타났습니다 : 다음

MimeBodyPart mbp = new MimeBodyPart(); 
mbp.attachFile(new File(file)); 
mbp.setHeader("Content-Type", "image/png"); 

내가 가진 : 그래서 난 그냥 내 코드에 세 번째 줄을 추가

Content-Type: application/octet-stream; name=screen.png 

:

Content-Type: image/png 

지금은 모든 것이 완벽하게 작동합니다! :)

0

:)! 사전에 감사하고 한 부분은 텍스트의 일부가 아닌, 그것은 이미지 부분입니다. 그것이 MIME 사양에 따라 완벽하게 합법적이지만, "비정상적인"것이고, 아마도 Facebook의 이메일은 그러한 메시지를 처리 ​​할 준비가되어 있지 않습니다.

PHP로 같은 일을했을 때 같은 구조의 메시지를 만들었습니까?

멀티 파트 메시지를 만들지 마십시오. 대신 이미지를 메시지 내용으로 설정하십시오.

또한 일반 텍스트 인 첫 번째 부분과 이미지 인 두 번째 부분으로 구성된 멀티 파트 메시지를 만들어보십시오.

+0

글쎄, 내가 PHP에서 사용한 라이브러리는 조금 다르므로 attachFile()과 같은 것을 사용했다. "또한 일반 텍스트 인 첫 번째 부분과 이미지 인 두 번째 부분으로 구성된 멀티 파트 메시지를 만들어보십시오." - 작동하지 않습니다. 이미 가지고있는 것과 같은 효과가 있습니다. – irishlad

+0

"멀티 파트 메시지를 만들지 말고 이미지를 메시지 내용으로 설정하십시오." - 음, 다음과 같이 시도했습니다. MimeBodyPart mbp = new MimeBodyPart(); mbp.attachFile (file); 하지만 attachFile (String) 함수가 없습니다. 그러나 참조 페이지에서 다음을 볼 수 있습니다. http://javamail.kenai.com/nonav/javadocs/javax/mail/internet/MimeBodyPart.html – irishlad

+0

** ** ** MimeBodyParts를 두 개 만들고 MimeMultipart에 추가했습니다. 권리? attachFile 메소드는 최신 버전의 JavaMail에 있습니다. 당신이 그것을 발견하지 못한다면 당신은 매우 오래된 버전을 사용하고 있습니다. PHP 코드를 변경하여 일반 INBOX로 메시지를 보낸 다음 메일러의 "소스보기"기능을 사용하여 메시지의 MIME 구조를 검사하십시오. 그 구조를 무엇이든간에 JavaMail과 함께 복제 할 수 있어야합니다. 당신이 그렇게하고 페이스 북이 여전히 그것을 좋아하지 않는다면, 나는 무엇이 잘못 될 수 있는지 모른다. –

관련 문제