Tworzę prosty moduł, który będzie wysyłał użytkownikom wiadomości e-mail w formacie HTML w celu znalezienia okazji w naszej witrynie.
Dużo szukałem, ale nie mogę znaleźć rozwiązania odpowiedniego dla Drupala. Teraz mogę wysyłać maile, ale zwykły tekst.
Co to jest krok po kroku procedura wysyłania e-maili HTML w Drupal 7?
function example_form_submit( $form,&$form_state) {
$friend_email=$form_state['values']['friend_email'];
$mailto =$friend_email; //gift to a friend
$mailfrom ='[email protected]';
$subject = "another message for HTML email from example.com";
$body="<h2 style='font-size:28px;color:red;'>Hello EMAIL, i here i want to be <b>bolded</b></h2>";
if (drupal_mail('example', 'send_gift', $mailto, language_default(),$params,$mailfrom,TRUE)) {
drupal_set_message(t('Your gift was sent successfully!!!'));
}
else {
drupal_set_message(t('<font color="red">Error occured while sending your mail!!!</font>'));
}
/****hook_mail*/
function example_mail($key,&$message,$params) {
$language = $message['language'];
switch ($key) {
case 'send_gift':
$message['subject']=t($params['subject'], $var, $language->language);
$message['body'][]=$params['body'];
$message['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed';
break;
}
}
Odpowiedzi:
Podobnie jak wspomniany przez Geoffa, jedną z opcji byłoby użycie modułu Poczta Mime, ale możesz także włączyć moduł niestandardowy, aby wysyłał wiadomości e-mail w formacie HTML z dodatkowym kodem. Krótko mówiąc, musisz zmienić
mail_system
zmienną i napisać własną implementacjęMailSystemInterface
. Przykładem tego jest następujący kod.Wewnątrz „mymodule.install”:
Wewnątrz „mymodule.module”:
Będziesz musiał zastąpić instancje wielu modułów rzeczywistą nazwą modułu, a następnie wyłączyć i ponownie włączyć moduł, aby zmienić zmienną, po której wszystko powinno działać. Aby uzyskać pełny przykład, możesz sprawdzić moją odpowiedź tutaj . Dodatkowo, ta strona na drupal.org pochodzi z której pierwotnie otrzymałem wszystkie informacje.
źródło
Moduł Mime Mail jest prawie na pewno tym, czego szukasz.
źródło
Możesz także zajrzeć do modułu Swift Mailer. Umożliwia wysyłanie wiadomości e-mail w formacie HTML z dołączonymi i zwykłymi załącznikami (takimi jak obrazy lub pliki). Ponadto jest w stanie automatycznie generować wersje zwykłego tekstu na podstawie wiadomości e-mail w formacie HTML.
Możesz na to spojrzeć http://www.drupal.org/project/swiftmailer
Dla przypomnienia: jestem autorem i opiekunem modułu.
źródło
Nie wysyłasz prawidłowego kodu HTML, dołączasz tylko tagi H1 i tagi B, prawdopodobnie musisz także dołączyć tagi Full HTML, zaczynając od
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
źródło
Żadna z powyższych odpowiedzi nie działała dla mnie, więc oto moje zdanie na temat pierwotnego pytania.
Przede wszystkim zainstaluj i włącz moduł Mime Mail . Możesz przeczytać plik README.txt aby uzyskać pełne instrukcje korzystania z niego. Dam ci krótką wersję.
Musisz włączyć Mime Mail dla swojego modułu. Możesz to zrobić za pomocą
hook_enable
lubhook_update_N
wexample.install
:Gdy przejdziesz do
admin/config/system/mailsystem
strony, zobaczysz, że dodano nowy wpis do Twojego modułu:Teraz nie musisz
text/html
już określać żadnych nagłówków, Mime Mail dba o to. Więc nie potrzebujesz tego:Jeśli chcesz, możesz dodać
$message['plaintext']
do swojej poczty alternatywę inną niż HTML, ale nie jest to wymagane.To jest to!
źródło