PM`s als Mail

Begonnen von kampfschaf, 04 Juli 2003, 22:51:32

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

kampfschaf

Hallo Gemeinde.

Bitte erschlagt mich nicht gleich, aber ich habe gesucht!

Ich würde gerne die Pm`s als Mail versenden, oder wenigstens eine Nachricht per Mail, das der User eine PM erhalten hat.
Natürlich nur wenn er nicht online ist/war.
Soll also heissen, wenn ein User von einem anderm eine Pm bekommt und er ist on, dann bekommt er Sie ja automatisch per Popup. Wenn er nun aber lange nicht online war, soll er eine Mail bekommen, das er ne PM bekommen hat.

Ist sowas zu realisieren?
Gruß
Kampfi

tequila

Tja, wenn Du an der Stelle, an der die PMs in die Datenbank für den User eingefügt werden eine Abfrage einbaust, ob er gerade online ist oder nicht, dann schon.

Weil ist er nicht online, dann sickt Du ihm das Ding eben über die PHP-Mailfunktion. Dürfte nicht so schwer sein.

Tip: nimm Dir die functions2.php vom eBoard, das sind diverse Aufrufe der Mail-Funktion drinnen, dann hast Du eine Vorlage für die Syntax. Such nach "mail(", dann solltest Du es finden ;)

Viel Erfolg

kampfschaf

Aha, so in der Art hatte ich mir das schon vorgestellt, zumindest vom Verständnis...

Aber ich denke das ist nichts für mich, weil ich`s net kann...
Dachte jemand hat das schon mal realisiert und ich könnte da was abzwacken *gg

Ich werde mich mal reinlesen.
danke

JensWagenknecht

Für das PM müssste es eine Funktion geben und dort die Mailfuinktion mit Abfrage, ob User online ist oder nicht rein.

Sollte sich keiner mehr melden, der es Dir macht, so gib Bescheid.  Ich mache es dann.

Nur mit dem neuen MX dürfte es dann wieder weg sein.

[Editiert am 5/7/2003 von JensWagenknecht]

Chris007

HAllo

Wie würde den die abfrage aussehen.

Die stelle habe ich gefunden wie ich die E-Mails verschicke. Nur will ich ja die E-mails verschicken wenn der User Offline ist.

Kurz was ich gemacht habe in der index.php von Private_Messages habe ich es über  messagesheader($uid); eingefügt.

list($touser_email) = sql_fetch_row(sql_query("SELECT email FROM ".$user_prefix."_users WHERE uid='$to_userid'", $dbi), $dbi);
@mail("$touser_email", "Sie haben auf der webseite eine PM", "Hier kommt Deine Message an den Empfänger rein", "From: $adminmail");

      messagesheader($uid);

Nun müsste ich ja eine if bedinung dazu setzen das es nur eine E-mail gibt wenn der empfänger offline ist.
Aber Wie ??

Besten Daank schon mal im vorraus für die Mühe und tipps.

jubilee

#5
Hallo !
Ob ein User online ist, kannst Du im VKPMX mit der Funktion
mxIsUserOnline($username)
feststellen.Diese gibt false in dem Fall zurück, das der User nicht online ist.
An diese Funktion übergibst Du den entsprechenden Usernamen und wenn die Funktion dann fallse zurückgibt, kannst Du das Mailen starten :
Zitat
list($touser_uname,$touser_email) = sql_fetch_row(sql_query("SELECT uname, email FROM ".$user_prefix."_users WHERE uid='$to_userid'", $dbi), $dbi);
if (!mxIsUserOnline($touser_uname))
{
   mxMail($touser_email, "Sie haben auf der webseite eine PM", "Hier kommt Deine Message an den Empfänger rein", $GLOBALS['adminmail'],"text","PM-Mail");
}

MfG
jubilee

Juliet

Falls jemans noch interesse daran hat, dass Use vorher auswählen können, ob Sie per Email über neue PN's informiert werden möchte bitte kurz bescheid sagen ... hab das gerade dazu gebaut , weil mir meine User sonst wegen unerlaubter Spam aufs Dach gestiegen wären ;)

smartmusic

hi...ich hätte daran interesse...

Juliet

HI :)

also ... ich ein wenig Frickelei, aber machbar.
Zunächst mußt Du eine neue Zeile in die prefix_users einfügen. Der Übersichthalber am besten unter user_pm_popuptime - BITTE VORHER DIE PREFIX_USERS DUMPEN!!!

Das neue Feld heißt user_pm_mail und hat folgende Werte:
Typ = INT
Länge/Set = 1
null = not null
Standart = 0

In die Datei Your_Account/edithome.php habe ich unter die Abfrage für die PM-Popuptime folgedes eingefügt:


### steht schon drin - nur als Anhalt für den PLatz zum Einfügen####
... echo "<tr valign=\"top\"><td bgcolor=\"$bgcolor2\"><font class=\"content\">"._YA_PMPOPTIME1."</font></td>"
."<td bgcolor=\"$bgcolor3\" colspan=\"2\">"._YA_PMPOPTIME3." <select name=\"user_pm_poptime\">".$options."</select> <span class=\"tiny\">"._YA_PMPOPTIME2."</span></td></tr>";
}
#### hier jetzt der neue Code für die Mail-Checkbox #######
$pn_mail = (empty($userinfo['user_pm_mail'])) ? "" : "checked";
$user_pm_mail = (empty($userinfo["user_pm_mail"]))  ? 0 : (int)$userinfo["user_pm_mail"];
echo "<tr valign=\"top\"><td bgcolor=\"$bgcolor2\"><font class=\"content\">Bei neuer PN informieren:</font></td>"
."<td bgcolor=\"$bgcolor3\" colspan=\"2\"><INPUT TYPE=\"CHECKBOX\" NAME=\"user_pm_mail\" VALUE=\"1\" ".$pn_mail."> <span class=\"tiny\">Bei einer neuen PN werden Sie vom System per Email informiert.</span></td></tr>\n";



In die Datei Private_Messages/index.php wird in die function submitmessage folgendes vor messagesheader($uid) eingefügt:

###Email bei neuer PN wenn User offline ist #####
list($touser_uname,$touser_email,$user_pm_mail) = sql_fetch_row(sql_query("SELECT uname, email, user_pm_mail FROM ".$user_prefix."_users WHERE uid='$to_userid'", $dbi), $dbi);
$message = "Halle $touser_uname,\nSie haben auf DEINE_DOMAIN.de eine neue Private Nachricht erhalten.
WICHTIG: Beachten Sie, dass dies nur eine Benachrichtigung ist. Bitte antworten Sie nicht auf diese E-Mail.
Ihre Nachricht können Sie hier abholen:\n http://www.DEINE_DOMAIN.de/modules.php?name=Private_Messages\n
=================================================================================
Wenn Sie nicht per Email über neue PN's informiert werden wollen können Sie die Option hier deaktivieren:\nhttp://www.DEINE_DOMAIN.de/modules.php?name=Your_Account&op=edithome";
$subject = "Private Nachricht auf DEINE_DOMAIN.de";
if (!mxIsUserOnline($touser_uname) && ($user_pm_mail ==1))
{
   mxMail($touser_email, "$subject", $message, $GLOBALS['adminmail'],"text","PM-Mail");
}
#######


Bitte DEINE_DOMAIN durch Deine Domain ersetzen :D

Nun kannst Du unter "Deine Einstellungen" den Haken setzen, ob Du über neue PN's per Email informiert werden möchtest oder eben nicht.

Bei mir funktioniert alles wunderbar. Falls sich Fehler eingeschlichen haben also bitte Bescheid sagen :)

smartmusic

wie bekomme ich denn die eine zeile in die mx_users ???

Juliet

#10
Per phpmyadmin - kommt darauf an welche version Du hast, aber üblich ist der Weg:

mx_users auswählen.
Unten steht: Neue Felder hinzufügen (dort gibst du 1 an)
Dann auswählen wo sie eingefügt werden soll: nach user_pm_poptime
OK

Dann bekommst Du die Zeile angezeigt in die Du die oben genannten Werte eingibst - et voilŕ!

smartmusic

wo muss ich was ändern,wenn ich gerne am anfang ein haken hätte , so das die user ihn rausnehmen können ?

smartmusic

habe alles so gemacht wie es hier steht,aber es kommen keine emails an....

Juliet

Zitatwo muss ich was ändern
Du mußt den Standartwert des Feldes user_pm_mail bei Standart auf 1 setzen. Wenn Du bereits 0 gesetzt hast mußt Du die Zeile mit dem SQL-Befehl ändern:
UPDATE `mx_users`SET `user_pm_mail`='1' WHERE `user_pm_mail`='0'; << BITTE vorher wieder dumpen!

Zitathabe alles so gemacht wie es hier steht,aber es kommen keine emails an....
1. War der User an den die PN gerichtet war wirklich offline? Nur wenn er offline ist bekommt er eine eMail
2. war die Option "per Mail über neue PN informiere" beim user auch wirklich gesetzt?

bei mir fuktioniert alles einwandfrei ... komisch.

smartmusic

was heisst dumpen?

ansonsten war alles richtig eingestellt?

Juliet

dumpen bedeutet, dass du von der mx_users vorher eine sicherungskopie machst, falls beim update etwas schief geht.

Bitte bedenke, dass ein User nicht offline ist, wenn er die Seite schließt, sondern erst, wenn er die voreingestellte Zeit nicht mehr online war (bei mir sind das 15 Minuten) oder er sich asugeloggt hat.

smartmusic

der user ist offline gewesen...was machen wir nun?

smartmusic

muss ich eigentlich auch was in die index.php sendmessage in die global einfügen?

Juliet

moooooooment

Zitatmuss ich eigentlich auch was in die index.php sendmessage in die global einfügen?

Hast Du den Code in die Funktion sendmessage oder in die Function submitmessage gepakt?

In die function submitmessage() muß es rein!

smartmusic

hatte ich auch darein gemacht...muss ich den dort was in der global zufügen?