2
0

Zend_Mail-Introduction.xml 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.mail.introduction">
  5. <title>Einführung</title>
  6. <sect2 id="zend.mail.introduction.getting-started">
  7. <title>Beginnen</title>
  8. <para>
  9. <classname>Zend_Mail</classname> stellt verallgemeinerte Funktionalitäten zum Verfassen
  10. und Senden sowohl von Text E-Mails als auch von <acronym>MIME</acronym>-konformen
  11. mehrteiligen E-Mails bereit. Mails können mit <classname>Zend_Mail</classname> durch den
  12. Standardtransport <classname>Zend_Mail_Transport_Sendmail</classname> oder über
  13. <classname>Zend_Mail_Transport_Smtp</classname> versendet werden.
  14. </para>
  15. <example id="zend.mail.introduction.example-1">
  16. <title>Einfache E-Mail mit Zend_Mail</title>
  17. <para>
  18. Eine einfache E-Mail besteht aus einigen Empfängern, einem Betreff, einem Hauptteil
  19. und einem Versender. Um solch eine Mail durch Verwenden von
  20. <classname>Zend_Mail_Transport_Sendmail</classname> zu Verwenden muß folgendes getan
  21. werden:
  22. </para>
  23. <programlisting language="php"><![CDATA[
  24. $mail = new Zend_Mail();
  25. $mail->setBodyText('Dies ist der Text dieser E-Mail.');
  26. $mail->setFrom('somebody@example.com', 'Ein Versender');
  27. $mail->addTo('somebody_else@example.com', 'Ein Empfänger');
  28. $mail->setSubject('TestBetreff');
  29. $mail->send();
  30. ]]></programlisting>
  31. </example>
  32. <note>
  33. <title>Minimale Definitionen</title>
  34. <para>
  35. Um eine E-Mail mit <classname>Zend_Mail</classname> zu versenden, muß mindestens ein
  36. Empfänger, ein Versender (z.B., mit <methodname>setFrom()</methodname>) und ein
  37. Nachrichtentext (Text und/oder <acronym>HTML</acronym>) angeben werden.
  38. </para>
  39. </note>
  40. <para>
  41. Für die meisten Mailattribute gibt es "Get" Methoden, um die im Mailobjekt abgelegten
  42. Informationen zu lesen. Für weitere Einzelheiten kann in die <acronym>API</acronym>
  43. Dokumentation gesehen werden. Eine besondere Methode ist
  44. <methodname>getRecipients()</methodname>. Sie gibt ein Array mit allen E-Mail Adressen
  45. der Empfänger zurück, die vor dem Methodenaufruf hinzugefügt worden sind.
  46. </para>
  47. <para>
  48. Aus Sicherheitsgründen filtert <classname>Zend_Mail</classname> alle Felder des
  49. Nachrichtenkopfs, um eine "Header Injection" mittels Zeilenvorschubzeichen
  50. (<emphasis>\n</emphasis>) zu verhindern. Doppelte Anführungszeichen werden zu einzelnen
  51. gewechselt und runde Klammern zu eckigen sowohl im Namen des Senders als auch des
  52. Empfängers. Wenn die Marken in Emailadressen sind, werden diese Marken entfernt.
  53. </para>
  54. <para>
  55. Die meisten Methoden des <classname>Zend_Mail</classname> Objekts können mit dem
  56. bequemen Flüssigen Interface verwendet werden.
  57. </para>
  58. <programlisting language="php"><![CDATA[
  59. $mail = new Zend_Mail();
  60. $mail->setBodyText('Das ist der Text der Nachricht.')
  61. ->setFrom('somebody@example.com', 'Einige Sender')
  62. ->addTo('somebody_else@example.com', 'Einige Empfänger')
  63. ->setSubject('TestBetreff')
  64. ->send();
  65. ]]></programlisting>
  66. </sect2>
  67. <sect2 id="zend.mail.introduction.sendmail">
  68. <title>Den standardmäßigen Sendmail Transport konfigurieren</title>
  69. <para>
  70. Der standard Transport für eine <classname>Zend_Mail</classname> Instanz ist
  71. <classname>Zend_Mail_Transport_Sendmail</classname>. Es ist notwendigerweise ein Wrapper
  72. für <acronym>PHP</acronym>'s <ulink
  73. url="http://php.net/mail"><methodname>mail()</methodname></ulink> Funktion. Wenn
  74. der <ulink url="http://php.net/mail"><methodname>mail()</methodname></ulink> Funktion
  75. zusätzliche Parameter mitgegeben werden sollen muß einfach eine neue Transport Instanz
  76. erzeugt werden und die Parameter dem Konstruktor übergeben werden. Die neue Transport
  77. Instanz kann dann als standard <classname>Zend_Mail</classname> Transport handeln oder
  78. der <methodname>send()</methodname> Methode von <classname>Zend_Mail</classname>
  79. übergeben werden.
  80. </para>
  81. <example id="zend.mail.introduction.sendmail.example-1">
  82. <title>
  83. Zusätzliche Parameter einem Zend_Mail_Transport_Sendmail Transport übergeben
  84. </title>
  85. <para>
  86. Dieses Beispiel zeigt wie der Rückgabe-Pfad der <ulink
  87. url="http://php.net/mail"><methodname>mail()</methodname></ulink> Funktion
  88. geändert werden kann.
  89. </para>
  90. <programlisting language="php"><![CDATA[
  91. $tr = new Zend_Mail_Transport_Sendmail('-freturn_to_me@example.com');
  92. Zend_Mail::setDefaultTransport($tr);
  93. $mail = new Zend_Mail();
  94. $mail->setBodyText('Das ist ein Text der Mail.');
  95. $mail->setFrom('somebody@example.com', 'Einige Sender');
  96. $mail->addTo('somebody_else@example.com', 'Einige Empfänger');
  97. $mail->setSubject('TestBetreff');
  98. $mail->send();
  99. ]]></programlisting>
  100. </example>
  101. <note>
  102. <title>Safe Mode Einschränkungen</title>
  103. <para>
  104. Der zusätzliche optionale Parameter verursacht das die <ulink
  105. url="http://php.net/mail"><methodname>mail()</methodname></ulink> Funktion
  106. fehlschlägt wenn <acronym>PHP</acronym> im Safe Mode läuft.
  107. </para>
  108. </note>
  109. <warning>
  110. <title>Sendmail Transport und Windows</title>
  111. <para>
  112. Das Handbuch von <acronym>PHP</acronym> sagt aus dass die Methode
  113. <methodname>mail()</methodname> ein unterschiedliches Verhalten auf Windows und auf
  114. *nix basierten Systemen zeigt. Die Verwendung von Sendmail Transport wird auf
  115. Windows nicht in Verbindung mit <methodname>addBcc()</methodname> funktionieren. Die
  116. <methodname>mail()</methodname> Funktion sendet auf eine Art und Weise an den BCC
  117. Empfänger, das alle anderen Empfänger diesen als Empfänger sehen!
  118. </para>
  119. <para>
  120. Deswegen sollte man, wenn man BCC auf einem Windows Server verwenden will, den
  121. SMTP Transport für das Senden verwenden!
  122. </para>
  123. </warning>
  124. </sect2>
  125. </sect1>