mandar - Nombre del remitente del formulario de correo electrónico de PHP en lugar de correo electrónico?
envio de email php mysql (8)
¡Gracias estímulos!
Entonces, toda tu porción de código se vería así:
// prepare email body text
$message = "";
$message .= "Thanks for registering .....";
$message .= "/n";
$message .= "More stuff here";
$headers = "From: John Smith <[email protected]>";
mail($recipientemail, "Hey thanks for joining!", $message, $headers);
Luego, el destinatario del correo electrónico verá un correo electrónico en su bandeja de entrada con el siguiente aspecto:
DE: John Smith
ASUNTO: ¡Gracias por unirte!
MENSAJE: Gracias por registrarte ..... Más cosas aquí
En este momento, he configurado un formulario de correo electrónico PHP y todo funciona bien. Sin embargo, mientras lo pruebo, solo obtengo la dirección de correo electrónico del remitente como nombre. Lo que quiero es el nombre del remitente, como:
John Doe
Sujeto sujeto sujeto
En lugar de:
Sujeto sujeto sujeto
A continuación se muestra el código ...
¿Puede alguien ayudarme por favor? Gracias.
PHP:
<?php
if(isset($_POST[''email''])) {
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "[email protected]";
$email_subject = $_REQUEST[''subject''];
function died($error) {
// your error code can go here
echo "We are very sorry, but there were error(s) found with the form you submitted. ";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "Please go back and fix these errors.<br /><br />";
die();
}
// validation expected data exists
if(!isset($_POST[''full_name'']) ||
!isset($_POST[''email'']) ||
!isset($_POST[''subject'']) ||
!isset($_POST[''message''])) {
died(''We are sorry, but there appears to be a problem with the form you submitted.'');
}
$full_name = $_POST[''full_name'']; // required
$email_from = $_POST[''email'']; // required
$subject = $_POST[''subject''];
$message= $_POST[''message'']; // required
$error_message = "";
$email_exp = ''/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+/.[A-Za-z]{2,4}$/'';
if(!preg_match($email_exp,$email_from)) {
$error_message .= ''The e-mail you entered does not appear to be valid.<br />'';
}
$string_exp = "/^[A-Za-z .''-]+$/";
if(!preg_match($string_exp,$full_name)) {
$error_message .= ''The name you entered does not appear to be valid.<br />'';
}
if(strlen($message) < 2) {
$error_message .= ''The message you entered doee not appear to be valid.<br />'';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Form details below./n/n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "Full Name: ".clean_string($full_name)."/n";
$email_message .= "E-mail: ".clean_string($email_from)."/n";
$email_message .= "Subject: ".clean_string($subject)."/n";
$email_message .= "Message: ".clean_string($message)."/n";
// create email headers
$headers = ''From: ''.$email_from."/r/n".
''Reply-To: ''.$email_from."/r/n" .
''X-Mailer: PHP/'' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>
<!-- include your own success html here -->
Thank you for contacting us. We will be in touch with you very soon.
<?php
}
?>
En los encabezados debe establecer el encabezado De así:
<?php
...
$headers = ''From: '' . clean_string($full_name) . '' <'' . clean_string($email_from) . ">/r/n";
..
?>
Entonces lo necesitas en esta forma:
"John Doe <[email protected]>"
Establece la dirección de correo electrónico así
$email_to = "Ricky <[email protected]>";
Justo después de las 4 líneas que dicen $email_message .= ...
agregue una línea:
$email_from = $full_name.''<''.$email_from.''>'';
Nombre del remitente del formulario de correo electrónico de Drupal en lugar de correo electrónico con base de dominio?
Ejemplo:
function hook_mail_alter(&$message) {
if($message[''id''] == "put_id" && $domain_id == 368){
$default_from = variable_get(''site_mail'', ini_get(''sendmail_from''));
if($message[''from''] == $default_from){
$message[''from''] = ''"''. variable_get(''site_name'', ''Drupal'') .''" <''.
$default_from .''>'';
$message[''headers''][''From''] = $message[''from''];
}
}
}
Por lo general, simplemente necesita reformatear la dirección de origen de esta manera:
"Ricky, Dear" <[email protected]>
cambia estas 4 lineas
$full_name = $_POST[''full_name''];
$email_from = $_POST[''email''];
$subject = $_POST[''subject''];
$message= $_POST[''message''];
a:
$full_name = $_POST[''full_name''];
$email_from = $_POST[''email''];
$subject = $_POST[''subject''];
$message= ''"'' . $full_name . ''" <'' . $_POST[''message''] . ''>'';
Por favor, asegúrese de copiar u pegar esto como está.