Drupal 7: mail is sent, but the body and subject are empty

I am trying to send email with Drupal 7. The email is being sent to my email account, but somehow the body and subject are empty. Please help me explain why. Thank you very much.

Below is my code:

This is a form

function get_friendform($form,&$form_submit){ $form['fullname'] = array( '#title' => t('Your Full Name: '), '#type' => 'textfield', '#required' => TRUE, '#size' => 30, ); $form['email'] = array( '#title' => t('Your Full Email: '), '#type' => 'textfield', '#required' => TRUE, '#size' => 30, ); $form['friend_email'] = array( '#title' => t('Your Friend Email: '), '#type' => 'textfield', '#required' => TRUE, '#size' => 30, ); $form['submit'] = array( '#type' => 'submit', '#value' => 'submit', '#submit' => array('sendform_form_submit') ); return $form; } function sendform_form_submit($form,&$form_submit){ $fullname = $form_submit['values']['fullname']; $email = $form_submit['values']['email']; $friend_email = $form_submit['values']['friend_email']; $current_page = $GLOBALS['base_url'] .'/'.current_path(); $mailto = 'thelinhuk @gmail.com '; $mailfrom = ' thelinhuk@yahoo.com '; $subject = "Links to event"; $body = $current_page; $params = array( 'body' => $body, 'subject' => $subject, ); if (drupal_mail('get_friendform', 'send_link', $mailto, language_default(),$params,$mailfrom,TRUE)) { drupal_set_message(t('Your message was sent successfully!!!')); } } function sendform_mail($key,&$message,$params) { $language = $message['language']; switch ($key) { case 'send_link': $message['subject']=t($params['subject'], $var, $language->language); $message['body'][]=$params['body']; $message['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed'; break; } } 

Thank you very much

new code

 function sendform_form_submit($form,&$form_submit){ $fullname = $form_submit['values']['fullname']; $email = $form_submit['values']['email']; $friend_email = $form_submit['values']['friend_email']; $current_page = $GLOBALS['base_url'] .'/'.current_path(); $mailto = ' thelinhuk@gmail.com '; $mailfrom = ' thelinhuk@yahoo.com '; $subject = "Links to event"; $params =''; $body[] = $current_page; $mail_message = drupal_mail('send_form', 'some_key', $mailto, language_default(), $params, $mailfrom, TRUE); $mail_message['subject'] = $subject; $mail_message['body'] = $body; $mail_system = drupal_mail_system($module, $key); $mail_message = $mail_system->format($mail_message); $mail_message['result'] = $mail_system->mail($mail_message); } 
+4
source share
1 answer

Use the following code example to send letters using drupal:

 $body = array(); $body[] = "Mail body"; $mail_message = drupal_mail($module, $key, $to, $lang, $params, $from, $send); $mail_message['subject'] = $subject; $mail_message['body'] = $body; $mail_system = drupal_mail_system($module, $key); $mail_message = $mail_system->format($mail_message); $mail_message['result'] = $mail_system->mail($mail_message); 

Update 1:

There is a problem in your code. You created the sendform_mail() function, and you never called it.

You can use the above code example inside the sendform_form_submit() form. It is much easier.

Update 2:

 $mail_message = drupal_mail('send_form', 'some_key', $mailto, language_default(), $params, $mailfrom, TRUE); 

In your code, change the last value to false , because you need to stop sending mail until the last line $mail_message['result'] .

Hope it works ... Muhammad.

+6
source

Source: https://habr.com/ru/post/1444354/


All Articles