simples por para mandar mail enviar electronico desde correo con como codigo automatico email magento

email - por - enviar mail automatico php



Enviar un correo electrónico programáticamente en Magento está fallando (3)

Saqué el elemento ''ssl'' => ''tls'' en la matriz en getMail () en Template.php y mi correo electrónico apareció. Todavía agradecería que alguien tuviera una explicación de cómo se debe especificar el nombre de usuario y la contraseña del servidor smtp, y una explicación de las diferencias en los métodos de carga de la plantilla, etc. sería muy bienvenido.

¿Por qué no hay ningún lugar en la Configuración / Sistema / Configuración de envío de correo para especificar un nombre de usuario y contraseña para su servidor smtp?

Para evitar esto, ¿necesita hacer los cambios en getMail () descritos en esta publicación ?: http://www.magentocommerce.com/boards/viewthread/1073/P30/

Quiero hacer algo muy simple:
- crear una plantilla de correo electrónico
- No tiene que hacer referencia a esa plantilla en ningún archivo de configuración.
- enviar un correo electrónico mediante programación utilizando la plantilla definida anteriormente
- valores de suministro para reemplazar cualquier etiqueta en la plantilla
- suministrar direcciones de correo electrónico del destinatario
- suministrar otros bits, como desde una dirección

Entonces primer paso: crea una plantilla.
- En Confguración / Correos electrónicos transaccionales, creo que se supone que debo ver una lista de plantillas. No veo nada. Pero si agrego una nueva plantilla, puedo seleccionar de una lista de plantillas.
- Dale a la plantilla un nombre de "Bob".
- Agregue algunos vars a la plantilla:
myvar1 = {{var myvar1}}
myvar2 = {{var myvar2}}
- Guardar la plantilla; se le da una Id de 1.

Ahora envíe el correo electrónico programáticamente desde una acción de controlador:
- No es necesario realizar cambios en LINEEND en Mime.php, ya que ya está configurado en / n en la versión 1.4.2.0
- Realice cambios en getMail () en Template.php como se especifica en esta publicación: http://www.magentocommerce.com/boards/viewthread/1073/P30/
- Escribir código en la acción del controlador para enviar el correo electrónico:

This returns nothing: $emailTemplate = Mage::getModel(''core/email_template'')->loadDefault(''no matter what goes here emailTemplate is not set''); This does return an email template: $emailTemplate = Mage::getModel(''core/email_template'')->loadByCode(''Bob''); but the call to send below fails: $emailTemplate->setSenderEmail(''[email protected]''); $emailTemplate->setSenderName(''Steve''); $emailTemplateVariables = array(); $emailTemplateVariables[''myvar1''] = ''TestValue1''; $emailTemplateVariables[''myvar2''] = ''TestValue2''; // $processedTemplate = $emailTemplate->getProcessedTemplate($emailTemplateVariables); -- this returns nothing $emailTemplate->send(''[email protected]'',''John'', $emailTemplateVariables); In the system.log I get the warning below, and no e-mail ever arrives. Warning: stream_socket_enable_crypto() [<a href=''streams.crypto''>streams.crypto</a>]: this stream does not support SSL/crypto in C:/Applications/Apache Software Foundation/Apache2.2/htdocs/magento/lib/Zend/Mail/Protocol/Smtp.php on line 206

¿Debería estar usando loadByCode? Desearía que hubiera alguna documentación valiosa (la ayuda para loadByCode es "Cargar plantilla por código" !!). ¿Debo usar send, sendTransactional? Oh, por un poco de documentación de calidad.

Gracias


Si alguien está buscando un código de muestra completo de cómo enviar un correo electrónico de Magento basado en una plantilla existente de correo electrónico de Magento, lo siguiente funciona bien. No requiere ninguna configuración XML. Puede cargar la plantilla por nombre y por ID. En este caso, lo cargo por su nombre.

// This is the name that you gave to the template in System -> Transactional Emails $emailTemplate = Mage::getModel(''core/email_template'')->loadByCode(''My Custom Email Template''); // These variables can be used in the template file by doing {{ var some_custom_variable }} $emailTemplateVariables = array( ''some_custom_variable'' => ''Hello World'' ); $processedTemplate = $emailTemplate->getProcessedTemplate($emailTemplateVariables); $emailTemplate->setSenderName(''Joe Bloggs''); $emailTemplate->setSenderEmail(''[email protected]''); $emailTemplate->setTemplateSubject("Here is your subject"); $emailTemplate->send(''[email protected]'', ''Joanna Bloggs'', $emailTemplateVariables);


Veo 2 preguntas aquí.

1. ¿Cómo configurar el sistema de correo de Magento para usar el protocolo smtp?

Está teniendo problemas para esto porque Magento está hecho para usar correo de host predeterminado. Entonces lo buscará en la máquina donde está instalado.

Si desea configurar un servidor smtp, le recomendaría usar esta extensión: http://www.magentocommerce.com/magento-connect/ziq2004/extension/460/advanced-smtp--artson.it

Me pareció simple de usar y configurar.

2. Cómo enviar un correo en su módulo personalizado

Primero puede crear su plantilla en Confguración / Correos electrónicos transaccionales, marque el Id. Para ello será su identificador

Entonces, simplemente use este código para enviar el correo en su módulo

<?php // The Id you just marked... $templateId = 1; // Define the sender, here we query Magento default email (in the configuration) // For customer support email, use : ''trans_email/ident_support/...'' $sender = Array(''name'' => Mage::getStoreConfig(''trans_email/ident_general/name''), ''email'' => Mage::getStoreConfig(''trans_email/ident_general/email'')); // Set you store // This information may be taken from the current logged in user $store = Mage::app()->getStore(); // In this array, you set the variables you use in your template $vars = Array(''my_var'' => $my_var, ''another_var'' => 12); // You don''t care about this... $translate = Mage::getSingleton(''core/translate''); // Send your email Mage::getModel(''core/email_template'')->sendTransactional($templateId, $sender, ''[email protected]'', ''Recipient Name'', $vars, $store->getId()); // You don''t care as well $translate->setTranslateInline(true); ?>

Espero que esto te ayudará

Saludos,