mirror of
https://github.com/friendica/friendica
synced 2024-12-22 18:00:16 +00:00
initial checkin mailbox reading functions - lots more to do
This commit is contained in:
parent
13eaa802e4
commit
158b65894a
5 changed files with 118 additions and 12 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -7,4 +7,5 @@ include/jquery-1.4.2.min.js
|
|||
*.out
|
||||
*.version*
|
||||
push*
|
||||
langup
|
||||
home.html
|
||||
|
|
2
boot.php
2
boot.php
|
@ -2,7 +2,7 @@
|
|||
|
||||
set_time_limit(0);
|
||||
|
||||
define ( 'FRIENDIKA_VERSION', '2.1.949' );
|
||||
define ( 'FRIENDIKA_VERSION', '2.1.950' );
|
||||
define ( 'DFRN_PROTOCOL_VERSION', '2.21' );
|
||||
define ( 'DB_UPDATE_VERSION', 1051 );
|
||||
|
||||
|
|
|
@ -17,9 +17,7 @@ If your Friendika site is called "demo.friendika.com" and your username/nickname
|
|||
|
||||
Notice this looks just like an email address. It was meant to be that way. It's easy for people to remember.
|
||||
|
||||
You *could* also put in the URL of your profile page, such as "http://demo.friendika.com/profile/bob".
|
||||
|
||||
The email-style address is certainly easier.
|
||||
You *could* also put in the URL of your "home" page, such as "http://demo.friendika.com/profile/bob", but the email-style address is certainly easier.
|
||||
|
||||
When you've submitted the connection page, it will take you back to your own site where you must then login (if necessary) and verify the connection request on *your* site. Once you've done this, the two websites can communicate with each other to complete the process (after your new friend has approved the request).
|
||||
|
||||
|
|
107
include/imap.php
Normal file
107
include/imap.php
Normal file
|
@ -0,0 +1,107 @@
|
|||
<?php
|
||||
|
||||
|
||||
function f9_imap_connect($mailbox,$username,$password) {
|
||||
|
||||
if(! (local_user() && function_exists('imap_open')))
|
||||
return false;
|
||||
|
||||
$mbox = imap_open($mailbox,$username,$password);
|
||||
|
||||
return $mbox;
|
||||
|
||||
}
|
||||
|
||||
|
||||
function f9_imap_poll_from($mbox,$str) {
|
||||
|
||||
if(! ($mbox && $str))
|
||||
return false;
|
||||
|
||||
$search = imap_search($mbox,'FROM "' . $str . '"', SE_UID);
|
||||
|
||||
return $search;
|
||||
}
|
||||
|
||||
|
||||
function getmsg($mbox,$mid) {
|
||||
// input $mbox = IMAP stream, $mid = message id
|
||||
// output all the following:
|
||||
global $charset,$htmlmsg,$plainmsg,$attachments;
|
||||
$htmlmsg = $plainmsg = $charset = '';
|
||||
$attachments = array();
|
||||
|
||||
// HEADER
|
||||
$h = imap_header($mbox,$mid);
|
||||
// add code here to get date, from, to, cc, subject...
|
||||
|
||||
// BODY
|
||||
$s = imap_fetchstructure($mbox,$mid);
|
||||
if (!$s->parts) // simple
|
||||
getpart($mbox,$mid,$s,0); // pass 0 as part-number
|
||||
else { // multipart: cycle through each part
|
||||
foreach ($s->parts as $partno0=>$p)
|
||||
getpart($mbox,$mid,$p,$partno0+1);
|
||||
}
|
||||
}
|
||||
|
||||
function getpart($mbox,$mid,$p,$partno) {
|
||||
// $partno = '1', '2', '2.1', '2.1.3', etc for multipart, 0 if simple
|
||||
global $htmlmsg,$plainmsg,$charset,$attachments;
|
||||
|
||||
// DECODE DATA
|
||||
$data = ($partno)?
|
||||
imap_fetchbody($mbox,$mid,$partno): // multipart
|
||||
imap_body($mbox,$mid); // simple
|
||||
// Any part may be encoded, even plain text messages, so check everything.
|
||||
if ($p->encoding==4)
|
||||
$data = quoted_printable_decode($data);
|
||||
elseif ($p->encoding==3)
|
||||
$data = base64_decode($data);
|
||||
|
||||
// PARAMETERS
|
||||
// get all parameters, like charset, filenames of attachments, etc.
|
||||
$params = array();
|
||||
if ($p->parameters)
|
||||
foreach ($p->parameters as $x)
|
||||
$params[strtolower($x->attribute)] = $x->value;
|
||||
if ($p->dparameters)
|
||||
foreach ($p->dparameters as $x)
|
||||
$params[strtolower($x->attribute)] = $x->value;
|
||||
|
||||
// ATTACHMENT
|
||||
// Any part with a filename is an attachment,
|
||||
// so an attached text file (type 0) is not mistaken as the message.
|
||||
if ($params['filename'] || $params['name']) {
|
||||
// filename may be given as 'Filename' or 'Name' or both
|
||||
$filename = ($params['filename'])? $params['filename'] : $params['name'];
|
||||
// filename may be encoded, so see imap_mime_header_decode()
|
||||
$attachments[$filename] = $data; // this is a problem if two files have same name
|
||||
}
|
||||
|
||||
// TEXT
|
||||
if ($p->type==0 && $data) {
|
||||
// Messages may be split in different parts because of inline attachments,
|
||||
// so append parts together with blank row.
|
||||
if (strtolower($p->subtype)=='plain')
|
||||
$plainmsg. = trim($data) ."\n\n";
|
||||
else
|
||||
$htmlmsg. = $data ."<br><br>";
|
||||
$charset = $params['charset']; // assume all parts are same charset
|
||||
}
|
||||
|
||||
// EMBEDDED MESSAGE
|
||||
// Many bounce notifications embed the original message as type 2,
|
||||
// but AOL uses type 1 (multipart), which is not handled here.
|
||||
// There are no PHP functions to parse embedded messages,
|
||||
// so this just appends the raw source to the main message.
|
||||
elseif ($p->type==2 && $data) {
|
||||
$plainmsg. = $data."\n\n";
|
||||
}
|
||||
|
||||
// SUBPART RECURSION
|
||||
if ($p->parts) {
|
||||
foreach ($p->parts as $partno0=>$p2)
|
||||
getpart($mbox,$mid,$p2,$partno.'.'.($partno0+1)); // 1.2, 1.2.1, etc.
|
||||
}
|
||||
}
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 2.1.949\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-04-14 20:36-0700\n"
|
||||
"POT-Creation-Date: 2011-04-15 01:04-0700\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -43,9 +43,9 @@ msgstr ""
|
|||
#: ../../mod/follow.php:8 ../../mod/display.php:133 ../../mod/profiles.php:7
|
||||
#: ../../mod/profiles.php:227 ../../mod/invite.php:13 ../../mod/invite.php:54
|
||||
#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:110
|
||||
#: ../../wip/photos.php:77 ../../wip/photos.php:723 ../../wip/group.php:19
|
||||
#: ../../wip/photos-chris.php:97 ../../wip/photos-chris.php:770
|
||||
#: ../../index.php:265
|
||||
#: ../../wip/photos.php:77 ../../wip/photos.php:723 ../../wip/follow2.php:8
|
||||
#: ../../wip/group.php:19 ../../wip/photos-chris.php:97
|
||||
#: ../../wip/photos-chris.php:770 ../../index.php:265
|
||||
msgid "Permission denied."
|
||||
msgstr ""
|
||||
|
||||
|
@ -2006,21 +2006,21 @@ msgstr ""
|
|||
msgid "Welcome back "
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/follow.php:186
|
||||
#: ../../mod/follow.php:32 ../../wip/follow2.php:186
|
||||
msgid "The profile address specified does not provide adequate information."
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/follow.php:192
|
||||
#: ../../mod/follow.php:38 ../../wip/follow2.php:192
|
||||
msgid ""
|
||||
"Limited profile. This person will be unable to receive direct/personal "
|
||||
"notifications from you."
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/follow.php:247
|
||||
#: ../../mod/follow.php:89 ../../wip/follow2.php:247
|
||||
msgid "Unable to retrieve contact information."
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/follow.php:293
|
||||
#: ../../mod/follow.php:135 ../../wip/follow2.php:293
|
||||
msgid "following"
|
||||
msgstr ""
|
||||
|
||||
|
|
Loading…
Reference in a new issue