2012-09-27 19 views
16

Estoy usando Parse.com (javascript SDK) y deseo que los usuarios puedan enviar un correo electrónico desde mi aplicación. Básicamente, crean una página usando la aplicación, y luego necesito permitirles que ingresen una lista de direcciones de correo electrónico; la aplicación luego enviará a cada dirección un enlace a la página que han creado.¿Cómo puede enviar mi aplicación Parse.com un correo electrónico?

Sin embargo, puedo encontrar cualquier cosa en la documentación que me diga cómo enviar el correo electrónico. Puedo tomar la lista de direcciones de correo electrónico y generar el correo electrónico, simplemente no puedo entender cómo enviarlo.

¿Esto es posible con Parse, y si es así, puede alguien señalarme en la dirección correcta?

Gracias!

Respuesta

4

No hay un método nativo para hacerlo. su mejor opción es esperar hasta que el Código de nube de Parse sea compatible con solicitudes HTTP de terceros. Hice una maqueta rápida de cómo se podría lograr esto usando Ironworker + Ruby a enviar el correo electrónico, pero que sin duda podría utilizar otros idiomas:

http://news.ycombinator.com/item?id=4506888

+7

votación parada para mi respuesta. el siguiente debe ser la respuesta aceptada. – user94154

30

Analizar los módulos de código nube de correo electrónico ahora ayuda que envía a través de un número de la nube Los proveedores de correo:

+0

¿cuál es el mejor? :) –

+0

@ M.Y. mandrill .. – SuperUberDuper

+0

Pero el análisis tiene su propia biblioteca para enviar correos electrónicos. La forma en que envían mensajes de correo electrónico cuando se verifica que el correo electrónico esté activado. ¿No hay alguna forma de acceder a ella? – lxknvlk

5

Aquí está la versión androide para @ uudaddy de respuesta

lado
public void sendMail(View view) { 
    Map<String, String> params = new HashMap<>(); 
    params.put("text", "Sample mail body"); 
    params.put("subject", "Test Parse Push"); 
    params.put("fromEmail", "[email protected]"); 
    params.put("fromName", "Source User"); 
    params.put("toEmail", "[email protected]"); 
    params.put("toName", "Target user"); 
    ParseCloud.callFunctionInBackground("sendMail", params, new FunctionCallback<Object>() { 
     @Override 
     public void done(Object response, ParseException exc) { 
      Log.e("cloud code example", "response: " + response); 
     } 
    }); 
} 

servidor Código JS (main.js) Parse Cloud

Parse.Cloud.define("sendMail", function(request, response) { 
var Mandrill = require('mandrill'); 
Mandrill.initialize('12AkxxxxxxxxxxxxxxrZEg'); 

Mandrill.sendEmail({ 
message: { 
text: request.params.text, 
subject: request.params.subject, 
from_email: request.params.fromEmail, 
from_name: request.params.fromName, 
to: [ 
{ 
email: request.params.toEmail, 
name: request.params.toName 
} 
] 
}, 
async: true 
},{ 
success: function(httpResponse) { 
console.log(httpResponse); 
response.success("Email sent!"); 
}, 
error: function(httpResponse) { 
console.error(httpResponse); 
response.error("Uh oh, something went wrong"); 
} 
}); 
}); 
+0

Recibo la respuesta como nulo –

+0

Debe seguir la respuesta de @uudaddy para configurar el resto del servidor, todo se reduce desde allí. – sector11

+0

Actualicé mi código, compruebe. – sector11

5

Alguien puede encontrar ejemplos útiles usando Mailgun, iOS y Parse Cloud.

Decidí recurrir a Mailgun ya que Mandril actualmente solo tenía 4k de correos gratuitos.

Tenga en cuenta que debe tener acceso a su dominio para configurar los registros 'TXT' y 'CNAME' y compruebe que Mailgun es el propietario del dominio.

código de la nube:

// Use Parse.Cloud.define to define as many cloud functions as you want. 
// For example: 
Parse.Cloud.define("hello", function(request, response) { 
    response.success("Hello world!"); 
}); 

Parse.Cloud.define("mailSend", function(request, response) { 

    var Mailgun = require('mailgun'); 
    Mailgun.initialize('DOMAIN_NAME', 'API_KEY'); 

    Mailgun.sendEmail({ 
     to: request.params.target, 
     from: request.params.originator, 
     subject: request.params.subject, 
     text: request.params.text 
    }, { 
     success: function(httpResponse) { 
     console.log(httpResponse); 
     response.success("Email sent!"); 
     }, 
     error: function(httpResponse) { 
     console.error(httpResponse); 
     response.error("Uh oh, something went wrong"); 
     } 
    }); 

}); 

Y ahora en algún lugar de su proyecto ObjC:

[PFCloud callFunctionInBackground:@"mailSend" 
        withParameters:@{ 
            @"target": @"[email protected]", 
            @"originator": @"[email protected]", 
            @"subject": @"Hey There", 
            @"text": @"This is your iOS originated mail" 
            } 
          block:^(NSString *result, NSError *error){ 

           NSLog(@"error %@", error); 
           NSLog(@"result %@", result); 

          }]; 
+0

¿Cómo demonios agregas los registros TXT y CNAME? ¿y donde? –

+0

Los agrega dentro del panel de administración de su proveedor de hosting. No puede usar esto sin un hosting ya comprado/obtenido. –

Cuestiones relacionadas