4

PHP で電子メール (From、To、Subject、Body、Attachments) を作成し、PHP で直接送信する代わりに、クライアントの電子メール プログラム (Thunderbird / Outlook / ...) で開くことはできますか?

私のコンテキストは次のとおりです。

  • フォームで、ユーザーは「宛先」の連絡先と送信するファイルを選択します (本文は定義済みのテキストです)。
  • 送信時に、準備したメールを彼のお気に入りのメール クライアントに表示して、変更できるようにしたい (CC の追加、本文の変更など)。

可能であれば、それを行う方法は?

4

3 に答える 3

2

私はこのようなことをします:

  • フォームから情報を収集します
  • フォームの送信時にデータを処理する
  • ユーザーにリンクを提示し、mailto:スキームを使用して変数を追加します。

たとえば、PHPでは次のようになります。

if(isset($_POST['send_mail']))
{
    $to = $_POST['email_to'];
    $subject = $_POST['email_subject'];
    $body = 'This would be your defined body...';

    // Now prepare the URL and present it to the user:
    $url = 'mailto:'.$to.'?subject='.rawurlencode($subject).'&body='.rawurlencode($body);
    echo '<a href="'.$url.'" title="Send Email Now">Send Email</a>';

    // A boolean value to hide the form
    // Necessary logic would need to be implemented on the page for this
    $show_form = false;
}

フォームは次のようになります。

<form method="post">
    <label for="select_email_to">Recipient:</label>
    <select name="email_to" id="select_email_to">
        <option value="someone@example.com">John Doe</option>
        <option value="someone.else@example.com">Jane Doe</option>
        <otion value="a.n.other@example.com">Foo Bar</otion>
    </select>
    <label for="input_subject">Subject</label>
    <input type="text" name="subject" id="input_subject" />

    <input type="submit" name="send_mail" value="Prepare Email" />
</form>

ファイルを含める必要がある場合は、フォームの送信時にサーバーにアップロードしてから、アップロードしたファイルへのリンクをメールの本文に含めます。

于 2013-01-24T12:46:00.857 に答える
0

mailto:URLスキームは、新しい電子メールへのリンクを作成する方法を示しています。ブラウザ/OSはこのメールをメールクライアントで開きます。

https://www.rfc-editor.org/rfc/rfc2368

于 2013-01-24T12:03:24.157 に答える
0

回答ありがとうございます。

残念ながら(そして実際にはまったく驚くことではありませんが)、添付ファイルデータをmailtoリンクに入れることはできません(duh)!

次に2つの解決策:

  1. クライアントの電子メールソフトウェアを本当に開く必要がある場合は、メッセージ本文のファイルへの直接リンクを含むmailtoを準備します。そのためには、受信者が直接リンクを確認してアクセスできる場所にファイルを保存する必要があります。
  2. 受信者がアクセスできる場所にファイルを保存できない場合(たとえば、アプリがファイアウォールの背後にあるイントラネットアプリである場合)、唯一の解決策は、クライアントのソフトウェアを使用せずに、PHP経由で直接メールを送信することです。
  3. または、最初にPHPを介して送信者にメールを送信し、受信者自身に転送して、メッセージを自由に変更できるようにすることもできます。しかし、それは訓練を受けていないユーザーにとっては少し混乱します...

乾杯!

于 2013-01-25T17:24:17.803 に答える