2014-02-10 3 views
1

Привет, я пытаюсь отправить электронное письмо с Outlook 2010 с помощью кода ниже.Отправить письмо с Outlook 2010 с помощью java mail api

package javamail; 

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 JavaMailTest { 
    public static void main(String[] args) { 
     String host="host"; 
     final String user="[email protected]";//change accordingly 
     String to="[email protected]";//change accordingly 

     //Get the session object 
     Properties props = new Properties(); 
     props.put("mail.smtp.host",host); 
     props.put("mail.smtp.auth", "false"); 

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

     //Compose the message 
     try { 
      MimeMessage message = new MimeMessage(session); 
      message.saveChanges(); 
      message.setFrom(new InternetAddress(user)); 
      message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); 
      message.setSubject("Test mail"); 
      message.setText("This is test mail."); 

      //send the message 
      Transport.send(message); 

      System.out.println("message sent successfully..."); 
     } 
     catch (MessagingException e) {e.printStackTrace();} 

    } 
} 

Приведенный выше код работает правильно, и я могу отправить почту (после того, как мой технический администратор позволило ретрансляцию на сервере). Но проблема в том, что я не могу видеть отправленное письмо в своем прогнозе. При анализе я узнал, что java mail api отправляет почту непосредственно с сервера smtp. Но я хочу, чтобы почта отправляла из моего профиля профайла. I.e я должен уметь видеть его в папке отправленной почты. Как я должен это делать? Какую api или стороннюю библиотеку с открытым исходным кодом можно использовать для достижения этой цели?

+0

Есть вы заглянули в любой скрипт VBA/Office? – admdrew

+0

@admdrew Что такое скрипты VBA/Office? это связано с визуальным основанием? Нет, у меня нет знаний на вышеупомянутом языке сценариев. Предпочтительно, я бы хотел какое-то решение в java. –

+0

'что такое скрипты VBA/Office?' Иди и посмотри! Вы также можете использовать стандартный .NET для этого; Я бы рекомендовал просто провести дополнительные исследования. – admdrew

ответ

1

Если вы хотите, чтобы сообщение было скопировано в вашу папку «Отправлено» и отправлено, вам необходимо явно скопировать его там.

Transport.send(msg); 
Folder sent = store.getFolder("Sent"); 
sent.appendMessages(new Message[] { msg }); 
+0

какой тип магазина следует использовать. Я попытался использовать Store store = session.getStore («smtp»); но оно выбрасывает исключение как javax.mail.NoSuchProviderException: неверный поставщик. какой тип магазина следует использовать? –

+0

«smtp» не является протоколом Store, это протокол транспорта. Используйте «imap» или «pop3» для доступа к вашему серверу. –

0

Ниже приведена ошибка при запуске кода.

com.sun.mail.util.MailConnectException: 

Couldn't connect to host, port: host, 25; timeout -1; 
nested exception is: java.net.UnknownHostException: host 
+0

Вам нужна помощь в работе над кодом, тогда вам нужно добавить комментарий, а не отправлять в качестве ответа –

0

Использование можно попробовать ниже код .. его рабочих для меня перспективы ..

String host = "outlook.office365.com"; 
    Properties props = new Properties(); 
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.smtp.starttls.enable", "true"); 
    props.put("mail.smtp.host", host);  //  mail server host 
    props.put("mail.smtp.port", "587");  // port 
0

Попробуйте ниже код для хранения почты в Sentbox для Outlook, ...

 Store store = session.getStore("imaps"); 
     store.connect("imap-mail.outlook.com", "username", "password"); 
     Folder folder = store.getFolder("Sent Items"); 
     folder.open(Folder.READ_WRITE); 
     message.setFlag(Flag.SEEN, true); 
     folder.appendMessages(new Message[] {message}); 
     store.close(); 
Смежные вопросы