it-swarm.com.de

Wie kann ich in meinem Plugin eine E-Mail senden?

Ich erstelle ein Plugin, das dem Webmaster der Site eine E-Mail sendet, wenn ich zur Seite 404 gehe. Das Skript überprüft, ob sich der verweisende Link auf unserer Website befindet, und sendet dann eine E-Mail an den Webmaster.

$message = "
<html>
    <head>
        <title>Alton Bible Church - Broken Link</title>
            <style type=\"text/css\">
                * {
                    font-family:Arial;
                }
                table {
                    background:#eee;
                    padding:15px;
                }
                #table {
                    width:500px;
                    overflow:scroll;
                }
                td {
                    border: 1px solid #aaa;
                    padding:10px;
                }
        </style>
    </head>
    <body>
        <p>There's a broken link on My Website</p>
        <div id=\"table\">
            <table>
                <tr>
                    <td>Broken Link</td><td>Referring Link</td>
                </tr>
                <tr>
                    <td><a href=\"" . $broken . "\">" . $broken . "</a></td><td><a href=\"" . $referrer . "\">" . $referrer . "</a></td>
                </tr>
            </table>
        </div>
    </body>
</html>";
$headers = 'MIME-Version: 1.0' . '\r\n';
$headers .= 'Content-type: text/html; charset=iso-8859-1' . '\r\n';
$headers .= 'From: My Website <[email protected]>' . '\r\n';
mail("Webmaster <[email protected]>", "My Website - Broken Link", $message, $headers);

Das Problem ist, dass die E-Mail nicht gesendet wird. Erlaubt mir WordPress nicht, mail () zu benutzen?

Das Problem sollte nicht beim Server liegen.

Vielen Dank!

1
Caleb

Verwenden Sie wp_mail() , nicht nur mail(). Es ist ein Wrapper für PHPMailer , eine Klasse, die sich um viele Probleme kümmert, die die native mail()-Funktion oft bekommt.

Informationen zur Verwendung in diesem Fall finden Sie in meinem Plugin 404 Tools . Um eine HTML-E-Mail zu senden, lesen Sie Milos Antwort auf eine verwandte Frage.

1
fuxia

wordPress blockiert die PHP-Funktion mail() nicht. Ein Fehler, den ich sehen kann, ist, dass '\r\n' in doppelten Anführungszeichen wie diesem "\r\n" stehen sollte

Auch wenn mail() funktioniert, ist es eine gute Praxis, WordPress-Funktionen zu verwenden. Hier wp_mail()

0
Mridul Aggarwal

Gib das einfach in deine functions.php ein und es sollte OK sein.


//SENDS 404 EMAIL TO ADMIN
function email_admin($location){
    $blname=get_option('blogname');
    $admemail = get_option('admin_email');
    $ipaddress = $_SERVER["REMOTE_ADDR"];
    $checkip = "http://www.projecthoneypot.org/ip_".$ipaddress;
    $mailhead  = "MIME-Version: 1.0\r\n";
    $mailhead .= "Content-type: text/plain; charset=UTF-8\r\n";
    $mailhead .= 'From: "' . $blname . '" \r\n";
    $mailsubj= $blname.': 404 error';
    $mailbody='Someone wanted to go to '.$_SERVER['SERVER_NAME'].$location." but you haven't created this page yet. Maybe you can have a look and see if anything needs to be fixed.\r\n
Their IP address is: ".$ipaddress."\r\n\nIn case you want to check if these are THE BAD GUYS, you can do it at $checkip";

    @mail($admemail,$mailsubj,$mailbody,$mailhead);
}

function mail_me_errors(){
    global $wp_query;
    $location=$_SERVER['REQUEST_URI'];
    if ($wp_query->is_404){
        email_admin($location);
    }
}
add_action('get_header', 'mail_me_errors');
0
Jeroen