Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Allgemeines zu Drupal ›

drupal Mail cc übergeben

Eingetragen von Halpha (7)
am 15.03.2011 - 01:41 Uhr in
  • Allgemeines zu Drupal

Hallo, 

hat jemand nen plan von der Mail Klasse von Drupal? Vorallem in der Drupal Version 6

Also wenn ja

Ich möchte nicht nur an eine Email Adresse senden sondern auch cc and weiter Email Adressen,

das ganze ist leider nicht mehr so einfach möglich weil ja in der Drupal 6 der Parameter $headers entfernt wurde, und statt dessen $params jetzt nur noch vorhanden ist.

Ich wollte jetzt via 

<?php

$headers
['cc'] = email@email.de; 
$params
['headers'] = $headers;  

?>

versucht zu lösen, nur leider klappt das nicht. Der nächste ansatz den ich im Web gefunden habe, ist via $to das zu lösen, nur ich möchte das ganze ja auf bcc haben und nicht an diese email Adressen. 

Dafür hat einer geschrieben $to['headers']['cc'] = email@email.de;

Nur das klappt natürlich auch nicht und ist meiner Meinung nach auch falsch, da in der $to ein string erwartet wird und kein Array.

Ich hoffe es hat irgend jemand einen Plan was ich falsch mache, ich verzweifle an drupal schön langsam

Mit freundlichen Grüßen

Michael Hagl

‹ [Gelöst] D7 will nur eine SQLite Wie mit Trigger eigene PHP Funktion aufrufen? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

drupal_mail

Eingetragen von stBorchert (6003)
am 15.03.2011 - 07:53 Uhr

Hallo.

Halpha schrieb

das ganze ist leider nicht mehr so einfach möglich weil ja in der Drupal 6 der Parameter $headers entfernt wurde, und statt dessen $params jetzt nur noch vorhanden ist.

Schau Dir mal die Dokumentation der Funktion [api:drupal_mail:6] an. Dort ist in einem Beispiel erklärt, dass die Header jetzt Teil der eigentlichen Nachricht ($message) sind.
Da man die Header jedoch nicht mehr direkt übergeben kann, muss man hier auf ein eigenes Modul und [api:hook_mail_alter:6] zurückgreifen.
Beispiel: http://civicactions.com/blog/2009/oct/10/modifying_your_sites_email_header

Für Deinen konkreten Fall würde dies also in etwa so aussehen (in einem Modul "carboncopy"):

<?php
/**
* Adds bcc to emails.
*/
function carboncopy_mail_alter(&$message) {
  if (
$message['id'] == 'modulename_messagekey') {
   
// Get default BCC mail from variable and set header.
   
$message['headers']['bcc'] = variable_get('carboncopy_bcc', 'info@example.com');
  }
}
?>

Damit setzt Du den BCC-Header für alle Mails mit der ID "modulename_messagekey".

hth,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, danke für deine

Eingetragen von Halpha (7)
am 15.03.2011 - 09:43 Uhr

Hallo,

danke für deine schnelle Antwort.

Das war genau das was ich gebraucht habe;). Nur, jetzt kann ich die zwar auf cc oder bcc setzen, aber Mails werden trotzdem nur an den Empfänger gesendet.

Ich hab als test mal die Email Adresse auf CC gesetzt, wenn ich jetzt die Mail bekomme steht die 2. Email Adresse auf CC aber unter dieser Email Adresse bekomme ich keine Emails:(

<?php

function xxxx_messaging_mail($key, &$message, $params) {
   
   
$headers = array(
       
'MIME-Version' => '1.0',
       
'Content-Type' => 'text/html; charset=UTF-8; format=flowed',
       
'Content-Transfer-Encoding' => '8Bit',
       
'X-Mailer' => 'Drupal'
   
);
    foreach (
$headers as $key => $value) {
       
$message['headers'][$key] = $value;
    }
   
$message['headers']['bcc'] = variable_get('carboncopy_bcc', 'halpha1990@googlemail.com');
   
   
$language           = $message['language'];
   
$variables          = xxxxx_messaging_mail_tokens($params['account'], $language);
   
$message['subject'] = str_replace(array("\r", "\n"), '', $params['subject']);
   
$message['body']    = t($params['body'], $variables, $language->language);  
}

?>

Mache ich da jetzt irgendetwas falsch?

Zur info ich hab jetzt 2 Funktionen, die 1.

<?php

function xxxx_messaging_email($uid, $params = array()){
   
//$uid could be both array of uids or single uid
   
if (is_numeric($uid)){
       
$uid = array($uid);
    } elseif(!
is_array($uid)) {
        return
false;
    }
      
    foreach (
$uid as $account_id) {
       
// Define $params account, this is the current user
       
$params['account'] = user_load($account_id);
       
       
// Get the the e-mail adress from the current user
       
$to = $params['account']->mail;
       
       
// Define the language
       
$language = user_preferred_language($GLOBALS['user']);
       
       
// Send mail
       
drupal_mail(
           
xxxx_MESSAGING_MODULE,
           
'mail',
           
$to,
           
$language,
           
$params
       
);
    }
}

?>

Die 2. ist die obere;). Dürfte eigentlich auch passen. Die Email wird durch die email function gesendet und dann mit der hook function mail bearbeitet.

Lg

Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

bcc

Eingetragen von stBorchert (6003)
am 15.03.2011 - 09:52 Uhr

Hallo.
Also wenn die 2. Adresse als BCC in der Mail steht, die bei Adresse 1 empfangen wurde, funktioniert auf der Seite von Drupal alles korrekt.
Wenn die Mail bei Adresse 2 nicht ankommt, vermute ich da eher ein Problem mit dem Email-Server. Hast Du Zugriff auf die entsprechenden log-Dateien?

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Naja ich habe 10 Email

Eingetragen von Halpha (7)
am 15.03.2011 - 10:02 Uhr

Naja ich habe 10 Email Adressen und habe Empfänger und CC immer ausgetauscht und jedes mal hab ich mit $to die Email bekommen aber wenn ich die gleiche Email Adresse dann für CC verwendet habe, kam nix an.

Dann kann es ja kaum am Server liegen, würde ich vermuten.

LG

  • Anmelden oder Registrieren um Kommentare zu schreiben

Log

Eingetragen von stBorchert (6003)
am 15.03.2011 - 10:18 Uhr

Lass Dir mal in [api:drupal_mail_send:6] die komplette Nachricht und die Variable $mimeheaders ausgeben.
Wichtig ist auch, dass Du "Cc" bzw. "Bcc" verwendest.

Zusätzlich kannst Du Dir noch eine PHP-Datei erstellen, die mail() direkt aufruft (ohne Drupal). In Beispiel #4 wird gezeigt, wie die Header aussehen müssen.

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

So jetzt pass auf, das ist

Eingetragen von Halpha (7)
am 15.03.2011 - 10:50 Uhr

So jetzt pass auf, das ist interessant :D

Also die funktion drupal_mail_send()

<?php

function drupal_mail_send($message) {
   
//echo '<pre>'.print_r($message, true).'</pre>';
  // Allow for a custom mail backend.
 
if (variable_get('smtp_library', '') && file_exists(variable_get('smtp_library', ''))) {
    include_once
'./'. variable_get('smtp_library', '');
    return
drupal_mail_wrapper($message);
  }
  else {
   
$mimeheaders = array();
    foreach (
$message['headers'] as $name => $value) {
     
$mimeheaders[] = $name .': '. mime_header_encode($value);
    }
    echo
'<pre>'.print_r($mimeheaders, true).'</pre>';
    return
mail(
     
$message['to'],
     
mime_header_encode($message['subject']),
     
// Note: e-mail uses CRLF for line-endings, but PHP's API requires LF.
      // They will appear correctly in the actual e-mail that is sent.
     
str_replace("\r", '', $message['body']),
     
// For headers, PHP's API suggests that we use CRLF normally,
      // but some MTAs incorrecly replace LF with CRLF. See #234403.
     
join("\n", $mimeheaders)
    );
  }
}

?>

Die mimeheaders werden schon mal gar nicht gesetzt, weil die if true ist. Ich hab dann mal probiert die if auszukomentieren und nur die else auszugeben, dann hab ich in den mimeheaders als Header drin die ich brauche, natürlich auch cc.

<?php

Array
(
    [
0] => MIME-Version: 1.0
   
[1] => Content-Type: text/html; charset=UTF-8; format=flowed
   
[2] => Content-Transfer-Encoding: 8Bit
   
[3] => X-Mailer: Drupal
   
[4] => Errors-To: info@xx.de
   
[5] => Return-Path: info@xx.de
   
[6] => Sender: info@xx.de
   
[7] => From: info@xx.de
   
[8] => Cc: xx@email.de
)

?>

Ansonst sind aber auch in der $message die Header eigentlich schön gesetzt,

<?php

[headers] => Array
        (
            [
MIME-Version] => 1.0
           
[Content-Type] => text/html; charset=UTF-8; format=flowed
           
[Content-Transfer-Encoding] => 8Bit
           
[X-Mailer] => Drupal
           
[Errors-To] => info@xx.de
           
[Return-Path] => info@xx.de
           
[Sender] => info@xx.de
           
[From] => info@xx.de
           
[Cc] => michael.hagl@xxx.de
       
)

?>

Die mail() werd ich jetzt dann mal erstellen;) hast eine Idee was hier falsch sein könnte?

  • Anmelden oder Registrieren um Kommentare zu schreiben

smtp

Eingetragen von stBorchert (6003)
am 15.03.2011 - 11:02 Uhr
Halpha schrieb

Die mimeheaders werden schon mal gar nicht gesetzt, weil die if true ist. ... hast eine Idee was hier falsch sein könnte?

Es ist nichts falsch. Auf Deinem Server wird eine SMTP-Bibliothek anstelle von mail() verwendet.
Schau mal, welches Modul die Funktion drupal_mail_wrapper() definiert.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Jup hab ich mittlerweile auch

Eingetragen von Halpha (7)
am 15.03.2011 - 11:09 Uhr

Jup hab ich mittlerweile auch rausgefunden;)

Also die function drupal_mail_wrapper($message) gibt es bei mir 2 mal:

1. Im phpmail.module

<?php

if (strpos(variable_get('smtp_library', ''), 'phpmailer') && !function_exists('drupal_mail_wrapper')) {
 
/**
   * Implementation of drupal_mail_wrapper().
   */
 
function drupal_mail_wrapper($message) {
   
module_load_include('inc', 'phpmailer', 'includes/phpmailer.drupal');
    return
phpmailer_send($message);
  }
}

?>

2. Im smtp.module

<?php

if (!strpos(variable_get('smtp_library', ''), 'mimemail') &&
      !
function_exists('drupal_mail_wrapper') ) {

  function
drupal_mail_wrapper($message) {
    return
smtp_drupal_mail_wrapper($message);
  }
}

?>

Normalerweise müsste der PHP Mailer auch benutzt werden, da ich von dem die Benutzer Daten und auch den Absender im Admin Bereich einstellen kann.

  • Anmelden oder Registrieren um Kommentare zu schreiben

PhpMailer

Eingetragen von OneExtra (4)
am 20.04.2011 - 17:52 Uhr

Ich hab denselben Fehler gehabt und unglaublich lange im Code und im Internet gesucht, das Problem aber lösen können. Es liegt daran, dass im PhpMailer-Modul "BCC" und "CC" stehen statt "Bcc" und "Cc", was nach RFC richtig wäre und was Drupal erwartet. Die entsprechenden Zeilen musst du per Hand ändern oder den Patch applyen:
http://drupal.org/node/927646

Grüße,
OneExtra

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Лучший сервис для продвижения сайта
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 6 Tagen 1 Stunde
  • Hey danke
    vor 6 Tagen 20 Stunden
  • Update: jetzt gibt's ein
    vor 1 Woche 14 Stunden
  • Hallo, im Prinzip habe ich
    vor 1 Woche 5 Tagen
  • Da scheint die Terminologie
    vor 1 Woche 5 Tagen
  • Kannst doch auch alles direkt
    vor 2 Wochen 2 Tagen
  • In der entsprechenden View
    vor 2 Wochen 2 Tagen
  • Dazu müsstest Du vermutlich
    vor 2 Wochen 2 Tagen
  • gelöst
    vor 4 Wochen 5 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 6 Tagen

Statistik

Beiträge im Forum: 250234
Registrierte User: 20450

Neue User:

  • Grantbor
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 16 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association