2008-09-16 21 views

Respuesta

31

He aquí un ejemplo de Gmail SMTP:

import java.io.*; 
import java.net.InetAddress; 
import java.util.Properties; 
import java.util.Date; 

import javax.mail.*; 

import javax.mail.internet.*; 

import com.sun.mail.smtp.*; 


public class Distribution { 

    public static void main(String args[]) throws Exception { 
     Properties props = System.getProperties(); 
     props.put("mail.smtps.host","smtp.gmail.com"); 
     props.put("mail.smtps.auth","true"); 
     Session session = Session.getInstance(props, null); 
     Message msg = new MimeMessage(session); 
     msg.setFrom(new InternetAddress("[email protected]"));; 
     msg.setRecipients(Message.RecipientType.TO, 
     InternetAddress.parse("[email protected]", false)); 
     msg.setSubject("Heisann "+System.currentTimeMillis()); 
     msg.setText("Med vennlig hilsennTov Are Jacobsen"); 
     msg.setHeader("X-Mailer", "Tov Are's program"); 
     msg.setSentDate(new Date()); 
     SMTPTransport t = 
      (SMTPTransport)session.getTransport("smtps"); 
     t.connect("smtp.gmail.com", "[email protected]", "<insert password here>"); 
     t.sendMessage(msg, msg.getAllRecipients()); 
     System.out.println("Response: " + t.getLastServerResponse()); 
     t.close(); 
    } 
} 

Ahora, hacerlo de esta manera sólo si desea mantener sus dependencias del proyecto al mínimo, si no puedo recomendar encarecidamente el uso de clases de Apache

http://commons.apache.org/email/

Saludos

Tov Are Jacobsen

+1

La dependencia del correo solar me pone un poco nervioso aquí, ¿y si uso un JRE no solar? –

+0

Sí, la API de Java Mail requiere implementaciones de protocolo y las implementaciones de referencia agrupadas se llaman sun, pero forman parte de la distribución oficial. Estos son java puro que debería funcionar bien en cualquier implementación de Java. No es una característica propietaria de un proveedor. – tovare

+0

Es posible que pueda omitir la instrucción de importación de com.sun :) – tovare

2

Consulte JavaMail API y javadocs asociados.

+0

Un ejemplo simple sería bienvenido. –

6

Otra forma es usar aspirina (https://github.com/masukomi/aspirin) así:

MailQue.queMail(MimeMessage message) 

..after haber construido su MimeMessage que el anterior.

Aspirin es un smtp 'servidor' por lo que no tiene que configurarlo. Pero tenga en cuenta que enviar un correo electrónico a un amplio grupo de destinatarios no es tan simple como parece debido a las diferentes reglas de filtrado de correo no deseado que reciben los servidores de correo y se aplican las aplicaciones cliente.

+7

Desearía que deletrearan "cola" correctamente. No inspira confianza –

+0

@brad el enlace que ha mencionado no funciona. Por supuesto, es una respuesta muy antigua. ¿Puedes corregirlo? –

+0

enlace fijo arriba – brad

0
import javax.mail.*; 
import javax.mail.internet.*; 
import java.util.*; 

public void postMail(String recipients[], String subject, 
    String message , String from) throws MessagingException { 

    //Set the host smtp address 
    Properties props = new Properties(); 
    props.put("mail.smtp.host", "smtp.jcom.net"); 

    // create some properties and get the default Session 
    Session session = Session.getDefaultInstance(props, null); 
    session.setDebug(false); 

    // create a message 
    Message msg = new MimeMessage(session); 

    // set the from and to address 
    InternetAddress addressFrom = new InternetAddress(from); 
    msg.setFrom(addressFrom); 

    InternetAddress[] addressTo = new InternetAddress[recipients.length]; 
    for (int i = 0; i < recipients.length; i++) { 
     addressTo[i] = new InternetAddress(recipients[i]); 
    } 
    msg.setRecipients(Message.RecipientType.TO, addressTo); 

    // Optional : You can also set your custom headers in the Email if you Want 
    msg.addHeader("MyHeaderName", "myHeaderValue"); 

    // Setting the Subject and Content Type 
    msg.setSubject(subject); 
    msg.setContent(message, "text/plain"); 
    Transport.send(msg); 
} 
Cuestiones relacionadas