Necesito ayuda con Sendmail / Mail() en Google App Engine

  • Autor Autor BryCom
  • Fecha de inicio Fecha de inicio
B

BryCom

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Buenas tardes, 😛irate:

He estado desarrollando un proyecto personal en Google App Engine. Sucede una cosa, que como ya muchos saben este espacio de Google tiene la función mail() desactivada del cual no soy capaz de hacer funcionar un script que tenía guardado desde hace mucho tiempo para hacer que mi sitio web me envié los mensajes de contacto a mi correo personal.

Yo me canse de inventar para hacer funcionar el script, pero nada de nada y desearía saber si alguno de ustedes me puede echar 1 manía por favor. Solo necesito al menos que funcione usando SMTP pero no sé cómo, estoy haciendo un proyecto para la universidad con motivos de educación y lo que he podido encontrar es Google App Engine / Ya ando establecido allí.

Este es mi archivo app.yaml (hace que funcione todos los archivos html y php, puedo instalar hasta plataformas como WordPress) yo mismo había buscado y copilado este código para poder instalar y hacer cualquier cosa. Puedo usar App Engine como Hosting definitivo de sitios web.

Insertar CODE, HTML o PHP:
application: indigo-computer-#
version: #
runtime: php
api_version: 1

handlers:
- url: /(.*\.(gif|png|jpg|ico|js|css))
  static_files: \1
  upload: (.*\.(gif|png|jpg|ico|js|css))

- url: /(.*\.php)
  script: \1

- url: /(.*\.html)
  script: \1

- url: /
  script: index.php

skip_files:
- ^(.*/)?\.exe$
- ^(.*/)?\.zip$
- ^(.*/)?\.bat$
- ^(.*/)?\.sh$
- ^(.*/)?\.md$

Y este es el código del sendmail.php, con el que necesito ayuda:

Insertar CODE, HTML o PHP:
<?
$_DEBUG = 0;
$_LISTA = array(
contacto => "CORREO"
);
$id = $_POST[_id];
$error = array();
if( $id ) {
$body = "";
foreach($_POST as $key => $value ) {
if( preg_match( "/^_/", $key ) || preg_match( "/(submit|imageField)/i", $key ) )
continue;
$value = chop( $value );
$key2 = preg_replace( "/_$/", "", $key );
$key2 = preg_replace( "/_/", " ", $key2 );
$key2 = strtoupper( $key2 );
if( preg_match( "/_$/", $key ) && ! $value ) {
array_push( $error, $key2 );
} elseif( $value ) {
$key2 .= preg_match( "/[\n\r]/", $value ) ? ":\n" : ": ";
$body .= "$key2$value\n\n";
}
}
$asunto = $_POST[Asunto_];
$email = $_POST[email];
$to = $_POST[_to] ? $_POST[_to] : $_LISTA[$id];
if( ! $asunto )
$asunto = $_POST[Asunto] ? $_POST[Asunto] : strtoupper($id[0]).substr($id,1);
if( ! $email || ! preg_match( "/[^@]+@([^.]+\.)+.{2,4}/", $email ) ) {
array_push( $error, "CORREO" );
}
$header = "De: $email\nX-Mailer: PHP/".phpversion();
if( $_DEBUG )
print "<pre>Para: $to\nSubject: $asunto\n$header\n\n$body</pre>";
else
mail( $to, $asunto, $body, $header );
if( sizeof( $error ) == 0 ) {
print <<<HTML
<p><span style="color:#0000cd;"><strong>Su mensaje ha enviado con &eacute;xito,</strong></span><span style="color: rgb(0, 0, 0);"> gracias por contactarnos, le responderemos lo m&aacute;s r&aacute;pido posible al correo procesado, </span><span style="color:#ff0000;">recuerde que no respondemos mensajes spam, lo bloqueamos.</span>
<br><br></p>
HTML;
} else {
$campos = implode( ", ", $error );
print <<<HTML
<p>
<b><font size="+1"><span style="color:#ff0000;">Corrija los campos:</span></font></b>
<br><br><span style="color:#a52a2a;"><b>$campos.</b></span><br><br>
</p>
HTML;
}
}
?>

Estaría muy agradecido si me pueden ayudar con este mini problema, buscando en Google había encontrado:

https://developers.google.com/appengine/docs/php/mail/

Pero la verdad que no entiendo nada de como adaptarselo a mi script.

Saludos y gracias por adelantado.
 
Has probado poner en el archivo index.php solo este codigo
Insertar CODE, HTML o PHP:
mail( $to, $asunto, $body, $header );

por ejemplo:

mail('hola@hotmail.com','Mi asunto','Esto es una prueba','');

Bueno al llamar al index.php, de seguro se ejecutara y tendría que enviar un correo, ya que funciona como PHP ya que pueden instalar CMS como wordpress, debería de ser posible.

Pero bueno google dice esto:
Insertar CODE, HTML o PHP:
use \google\appengine\api\mail\Message;

$image_content_id = '<image-content-id>';

try
{
  $message = new Message();
  $message->setSender("from@google.com");
  $message->addTo("to@google.com");
  $message->setSubject("Example email");
  $message->setTextBody("Hello, world!");
  $message->addAttachment('image.jpg', 'image data', $image_content_id);
  $message->send();
} catch (InvalidArgumentException $e) {
  // ...
}

Tienes que incluir la clase Message, crear un instancia y bueno ya lo demás lo sabes.

Saludos.
 
Atrás
Arriba