1

以下のコードを変更して、電子メールが1つではなく2つのアドレスに送信されるようにしたいと思います。この「sendto="myaddress1 @ gmail.com、myaddress2@gmail.com"」を試しましたが成功しませんでした(メッセージが送信されません)。何か案が?私のホスティング会社は1&1です(購読しているだけなので、最近のバージョンのphpを実行していると仮定します)

元のコードは次のとおりです。

<?php
$sendto   = "myaddress@gmail.com";
$usermail = $_POST['email'];
$username = $_POST['name'];
$content  = nl2br($_POST['msg']);

$subject  = "New Message from domain.com";
$headers  = "From: " . strip_tags($usermail) . "\r\n";
$headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;charset=utf-8 \r\n";

$msg  = "<html><body style='font-family:Arial,sans-serif;'>";
$msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>New message</h2>\r\n";
$msg .= "<p><strong>From:</strong> ".$username."</p>\r\n";
$msg .= "<p><strong>E-mail:</strong> ".$usermail."</p>\r\n";
$msg .= "<p><strong>Message:</strong> ".$content."</p>\r\n";
$msg .= "</body></html>";


if(@mail($sendto, $subject, $msg, $headers)) {
    echo "true";
} else {
    echo "false";
}

?>

そしてjavascript:

// Contact form
function validateEmail(email) { 
        var reg = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        return reg.test(email);
    }

    $(document).ready(function() {
        $(".modalbox").fancybox();
        $("#contact").submit(function() { return false; });


        $("#send").on("click", function(){
            var emailval  = $("#email").val();
            var msgval    = $("#msg").val();
            var msglen    = msgval.length;
            var mailvalid = validateEmail(emailval);
            var nameval = $("#name").val();

            if(mailvalid == false) {
                $("#email").addClass("error");
            }
            else if(mailvalid == true){
                $("#email").removeClass("error");
            }

            if(msglen < 4) {
                $("#msg").addClass("error");
            }
            else if(msglen >= 4){
                $("#msg").removeClass("error");
            }

            if(nameval < 2) {
            //name must be at least 2 characters
                    $("#name").addClass("error");
            }
            else if(nameval >= 2){
                    $("#name").removeClass("error");
            }

            if(mailvalid == true && msglen >= 4) {
                // if both validate we attempt to send the e-mail
                // first we hide the submit btn so the user doesnt click twice
                $("#send").replaceWith("<em>sending...</em>");

                $.ajax({
                    type: 'POST',
                    url: '../sendmessage.php',
                    data: $("#contact").serialize(),
                    success: function(data) {
                        if(data == "true") {
                            $("#contact").fadeOut("fast", function(){
                                $(this).before("<p><strong>Success! Your message has been sent, thank you.</strong></p>");
                                setTimeout("$.fancybox.close()", 1000);
                            });
                        }
                    }
                });
            }
        });
    });
4

2 に答える 2

1

コンマはドキュメント [http://php.net/manual/en/function.mail.php] に従って機能するはずなので、何か他のことが間違っているに違いありません。@ を削除して、エラー メッセージが表示されるかどうかを確認してください。どのバージョンの PHP を使用していますか?

于 2012-08-11T20:28:25.463 に答える
0

アドレスを使用して配列を作成し、 foreachループを使用して各アドレスにメールを送信します。

追加:アドレスを使用して配列を作成し、ループを実行します。

$addresses = array(user1@example.com,user2@example.com,user3@example.com);
foreach($addresses as $address) {
if(@mail($address, $subject, $msg, $headers)) {
    echo "true";
} else {
    echo "false";
}
}

またはそれより短い:

$addresses = array(user1@example.com,user2@example.com,user3@example.com);
foreach($addresses as $address) {
    echo (@mail($address, $subject, $msg, $headers)) ? 'true' : 'false';
}
于 2012-08-11T20:24:42.377 に答える