Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
dolibarr
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Container Registry
Model registry
Analyze
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Software_Artifact_Infrastructure_Repository
dolibarr
Commits
893b7b96
Commit
893b7b96
authored
13 years ago
by
Laurent Destailleur
Browse files
Options
Downloads
Patches
Plain Diff
Doxygen
parent
16c6dd3c
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
htdocs/core/class/smtps.class.php
+91
-57
91 additions, 57 deletions
htdocs/core/class/smtps.class.php
with
91 additions
and
57 deletions
htdocs/core/class/smtps.class.php
+
91
−
57
View file @
893b7b96
...
@@ -240,24 +240,46 @@ class SMTPs
...
@@ -240,24 +240,46 @@ class SMTPs
/**
* Set delivery receipt
*
* @param int $_val Value
* @return void
*/
function
setDeliveryReceipt
(
$_val
=
0
)
function
setDeliveryReceipt
(
$_val
=
0
)
{
{
$this
->
_deliveryReceipt
=
$_val
;
$this
->
_deliveryReceipt
=
$_val
;
}
}
/**
* get delivery receipt
*
* @return int Delivery receipt
*/
function
getDeliveryReceipt
()
function
getDeliveryReceipt
()
{
{
return
$this
->
_deliveryReceipt
;
return
$this
->
_deliveryReceipt
;
}
}
/**
* Set errors to
*
* @param string $_strErrorsTo Errors to
* @return void
*/
function
setErrorsTo
(
$_strErrorsTo
)
function
setErrorsTo
(
$_strErrorsTo
)
{
{
if
(
$_strErrorsTo
)
if
(
$_strErrorsTo
)
$this
->
_errorsTo
=
$this
->
_strip_email
(
$_strErrorsTo
);
$this
->
_errorsTo
=
$this
->
_strip_email
(
$_strErrorsTo
);
}
}
function
getErrorsTo
(
$_part
=
true
)
/**
* Get errors to
*
* @param boolean $_part Variant
* @return string Errors to
*/
function
getErrorsTo
(
$_part
=
true
)
{
{
$_retValue
=
''
;
$_retValue
=
''
;
...
@@ -269,8 +291,13 @@ class SMTPs
...
@@ -269,8 +291,13 @@ class SMTPs
return
$_retValue
;
return
$_retValue
;
}
}
/**
function
setDebug
(
$_vDebug
=
false
)
* Set debug
*
* @param boolean $_vDebug Value for debug
* @return void
*/
function
setDebug
(
$_vDebug
=
false
)
{
{
$this
->
_debug
=
$_vDebug
;
$this
->
_debug
=
$_vDebug
;
}
}
...
@@ -306,7 +333,7 @@ class SMTPs
...
@@ -306,7 +333,7 @@ class SMTPs
// DOL_CHANGE LDR
// DOL_CHANGE LDR
include_once
(
DOL_DOCUMENT_ROOT
.
'/core/lib/functions2.lib.php'
);
include_once
(
DOL_DOCUMENT_ROOT
.
'/core/lib/functions2.lib.php'
);
if
(
(
!
is_ip
(
$host
))
&&
((
gethostbyname
(
$host
))
==
$host
)
)
if
(
(
!
is_ip
(
$host
))
&&
((
gethostbyname
(
$host
))
==
$host
))
{
{
$this
->
_setErr
(
99
,
$host
.
' is either offline or is an invalid host name.'
);
$this
->
_setErr
(
99
,
$host
.
' is either offline or is an invalid host name.'
);
$_retVal
=
false
;
$_retVal
=
false
;
...
@@ -314,11 +341,13 @@ class SMTPs
...
@@ -314,11 +341,13 @@ class SMTPs
else
else
{
{
//See if we can connect to the SMTP server
//See if we can connect to the SMTP server
if
(
$this
->
socket
=
@
fsockopen
(
$this
->
getHost
(),
// Host to 'hit', IP or domain
if
(
$this
->
socket
=
@
fsockopen
(
$this
->
getPort
(),
// which Port number to use
$this
->
getHost
(),
// Host to 'hit', IP or domain
$this
->
errno
,
// actual system level error
$this
->
getPort
(),
// which Port number to use
$this
->
errstr
,
// and any text that goes with the error
$this
->
errno
,
// actual system level error
$this
->
_smtpTimeout
)
)
// timeout for reading/writing data over the socket
$this
->
errstr
,
// and any text that goes with the error
$this
->
_smtpTimeout
))
// timeout for reading/writing data over the socket
{
{
// Fix from PHP SMTP class by 'Chris Ryan'
// Fix from PHP SMTP class by 'Chris Ryan'
// Sometimes the SMTP server takes a little longer to respond
// Sometimes the SMTP server takes a little longer to respond
...
@@ -386,7 +415,7 @@ class SMTPs
...
@@ -386,7 +415,7 @@ class SMTPs
* @return mixed void
* @return mixed void
* $_strMsg If this is run in 'Test' mode, the actual message structure will be returned
* $_strMsg If this is run in 'Test' mode, the actual message structure will be returned
*/
*/
function
sendMsg
(
$_bolTestMsg
=
false
,
$_bolDebug
=
false
)
function
sendMsg
(
$_bolTestMsg
=
false
,
$_bolDebug
=
false
)
{
{
/**
/**
* Default return value
* Default return value
...
@@ -419,7 +448,7 @@ class SMTPs
...
@@ -419,7 +448,7 @@ class SMTPs
// From this point onward most server response codes should be 250
// From this point onward most server response codes should be 250
// Specify who the mail is from....
// Specify who the mail is from....
// This has to be the raw email address, strip the "name" off
// This has to be the raw email address, strip the "name" off
$this
->
socket_send_str
(
'MAIL FROM: '
.
$this
->
getFrom
(
'addr'
),
'250'
);
$this
->
socket_send_str
(
'MAIL FROM: '
.
$this
->
getFrom
(
'addr'
),
'250'
);
// 'RCPT TO:' must be given a single address, so this has to loop
// 'RCPT TO:' must be given a single address, so this has to loop
// through the list of addresses, regardless of TO, CC or BCC
// through the list of addresses, regardless of TO, CC or BCC
...
@@ -448,7 +477,7 @@ class SMTPs
...
@@ -448,7 +477,7 @@ class SMTPs
// Now tell the server we are done and close the socket...
// Now tell the server we are done and close the socket...
fputs
(
$this
->
socket
,
'QUIT'
);
fputs
(
$this
->
socket
,
'QUIT'
);
fclose
(
$this
->
socket
);
fclose
(
$this
->
socket
);
}
}
}
}
...
@@ -510,13 +539,13 @@ class SMTPs
...
@@ -510,13 +539,13 @@ class SMTPs
{
{
// Set these properties ONLY if they are set in the php.ini file.
// Set these properties ONLY if they are set in the php.ini file.
// Otherwise the default values will be used.
// Otherwise the default values will be used.
if
(
$_host
=
ini_get
(
'SMTPs'
)
)
if
(
$_host
=
ini_get
(
'SMTPs'
)
)
$this
->
setHost
(
$_host
);
$this
->
setHost
(
$_host
);
if
(
$_port
=
ini_get
(
'smtp_port'
)
)
if
(
$_port
=
ini_get
(
'smtp_port'
)
)
$this
->
setPort
(
$_port
);
$this
->
setPort
(
$_port
);
if
(
$_from
=
ini_get
(
'sendmail_from'
)
)
if
(
$_from
=
ini_get
(
'sendmail_from'
)
)
$this
->
setFrom
(
$_from
);
$this
->
setFrom
(
$_from
);
}
}
...
@@ -535,7 +564,7 @@ class SMTPs
...
@@ -535,7 +564,7 @@ class SMTPs
*/
*/
function
setTransportType
(
$_type
=
0
)
function
setTransportType
(
$_type
=
0
)
{
{
if
(
(
is_numeric
(
$_type
)
)
&&
if
(
(
is_numeric
(
$_type
)
)
&&
(
(
$_type
>=
0
)
&&
(
$_type
<=
3
)
)
)
(
(
$_type
>=
0
)
&&
(
$_type
<=
3
)
)
)
$this
->
_transportType
=
$_type
;
$this
->
_transportType
=
$_type
;
}
}
...
@@ -603,7 +632,7 @@ class SMTPs
...
@@ -603,7 +632,7 @@ class SMTPs
*/
*/
function
setPort
(
$_intPort
)
function
setPort
(
$_intPort
)
{
{
if
(
(
is_numeric
(
$_intPort
)
)
&&
if
(
(
is_numeric
(
$_intPort
)
)
&&
(
(
$_intPort
>=
1
)
&&
(
$_intPort
<=
65536
)
)
)
(
(
$_intPort
>=
1
)
&&
(
$_intPort
<=
65536
)
)
)
$this
->
_smtpsPort
=
$_intPort
;
$this
->
_smtpsPort
=
$_intPort
;
}
}
...
@@ -701,7 +730,7 @@ class SMTPs
...
@@ -701,7 +730,7 @@ class SMTPs
*/
*/
function
setTransEncode
(
$_strTransEncode
)
function
setTransEncode
(
$_strTransEncode
)
{
{
if
(
array_search
(
$_strTransEncode
,
$this
->
_smtpsTransEncodeTypes
)
)
if
(
array_search
(
$_strTransEncode
,
$this
->
_smtpsTransEncodeTypes
)
)
$this
->
_smtpsTransEncode
=
$_strTransEncode
;
$this
->
_smtpsTransEncode
=
$_strTransEncode
;
}
}
...
@@ -802,12 +831,12 @@ class SMTPs
...
@@ -802,12 +831,12 @@ class SMTPs
if
(
!
empty
(
$_addrList
))
if
(
!
empty
(
$_addrList
))
{
{
// $_addrList can be a STRING or an array
// $_addrList can be a STRING or an array
if
(
is_string
(
$_addrList
)
)
if
(
is_string
(
$_addrList
)
)
{
{
// This could be a COMMA delimited string
// This could be a COMMA delimited string
if
(
strstr
(
$_addrList
,
','
)
)
if
(
strstr
(
$_addrList
,
','
)
)
// "explode "list" into an array
// "explode "list" into an array
$_addrList
=
explode
(
','
,
$_addrList
);
$_addrList
=
explode
(
','
,
$_addrList
);
// Stick it in an array
// Stick it in an array
else
else
...
@@ -818,28 +847,28 @@ class SMTPs
...
@@ -818,28 +847,28 @@ class SMTPs
foreach
(
$_addrList
as
$_strAddr
)
foreach
(
$_addrList
as
$_strAddr
)
{
{
// Strip off the end '>'
// Strip off the end '>'
$_strAddr
=
str_replace
(
'>'
,
''
,
$_strAddr
);
$_strAddr
=
str_replace
(
'>'
,
''
,
$_strAddr
);
// Seperate "Real Name" from eMail address
// Seperate "Real Name" from eMail address
$_tmpaddr
=
null
;
$_tmpaddr
=
null
;
$_tmpaddr
=
explode
(
'<'
,
$_strAddr
);
$_tmpaddr
=
explode
(
'<'
,
$_strAddr
);
// We have a "Real Name" and eMail address
// We have a "Real Name" and eMail address
if
(
count
(
$_tmpaddr
)
==
2
)
if
(
count
(
$_tmpaddr
)
==
2
)
{
{
$_tmpHost
=
explode
(
'@'
,
$_tmpaddr
[
1
]);
$_tmpHost
=
explode
(
'@'
,
$_tmpaddr
[
1
]);
$_tmpaddr
[
0
]
=
trim
(
$_tmpaddr
[
0
],
' ">'
);
$_tmpaddr
[
0
]
=
trim
(
$_tmpaddr
[
0
],
' ">'
);
$aryHost
[
$_tmpHost
[
1
]][
$_type
][
$_tmpHost
[
0
]]
=
$_tmpaddr
[
0
];
$aryHost
[
$_tmpHost
[
1
]][
$_type
][
$_tmpHost
[
0
]]
=
$_tmpaddr
[
0
];
}
}
// We only have an eMail address
// We only have an eMail address
else
else
{
{
// Strip off the beggining '<'
// Strip off the beggining '<'
$_strAddr
=
str_replace
(
'<'
,
''
,
$_strAddr
);
$_strAddr
=
str_replace
(
'<'
,
''
,
$_strAddr
);
$_tmpHost
=
explode
(
'@'
,
$_strAddr
);
$_tmpHost
=
explode
(
'@'
,
$_strAddr
);
$_tmpHost
[
0
]
=
trim
(
$_tmpHost
[
0
]);
$_tmpHost
[
0
]
=
trim
(
$_tmpHost
[
0
]);
$_tmpHost
[
1
]
=
trim
(
$_tmpHost
[
1
]);
$_tmpHost
[
1
]
=
trim
(
$_tmpHost
[
1
]);
$aryHost
[
$_tmpHost
[
1
]][
$_type
][
$_tmpHost
[
0
]]
=
''
;
$aryHost
[
$_tmpHost
[
1
]][
$_type
][
$_tmpHost
[
0
]]
=
''
;
}
}
...
@@ -871,20 +900,20 @@ class SMTPs
...
@@ -871,20 +900,20 @@ class SMTPs
$_aryEmail
[
'org'
]
=
$_strAddr
;
$_aryEmail
[
'org'
]
=
$_strAddr
;
// Set entire string to Lower Case
// Set entire string to Lower Case
$_strAddr
=
strtolower
(
$_strAddr
);
$_strAddr
=
strtolower
(
$_strAddr
);
// Drop "stuff' off the end
// Drop "stuff' off the end
$_strAddr
=
trim
(
$_strAddr
,
' ">'
);
$_strAddr
=
trim
(
$_strAddr
,
' ">'
);
// Seperate "Real Name" from eMail address, if we have one
// Seperate "Real Name" from eMail address, if we have one
$_tmpAry
=
explode
(
'<'
,
$_strAddr
);
$_tmpAry
=
explode
(
'<'
,
$_strAddr
);
// Do we have a "Real name"
// Do we have a "Real name"
if
(
count
(
$_tmpAry
)
==
2
)
if
(
count
(
$_tmpAry
)
==
2
)
{
{
// We may not really have a "Real Name"
// We may not really have a "Real Name"
if
(
$_tmpAry
[
0
])
if
(
$_tmpAry
[
0
])
$_aryEmail
[
'real'
]
=
trim
(
$_tmpAry
[
0
],
' ">'
);
$_aryEmail
[
'real'
]
=
trim
(
$_tmpAry
[
0
],
' ">'
);
$_aryEmail
[
'addr'
]
=
$_tmpAry
[
1
];
$_aryEmail
[
'addr'
]
=
$_tmpAry
[
1
];
}
}
...
@@ -892,7 +921,7 @@ class SMTPs
...
@@ -892,7 +921,7 @@ class SMTPs
$_aryEmail
[
'addr'
]
=
$_tmpAry
[
0
];
$_aryEmail
[
'addr'
]
=
$_tmpAry
[
0
];
// Pull User Name and Host.tld apart
// Pull User Name and Host.tld apart
list
(
$_aryEmail
[
'user'
],
$_aryEmail
[
'host'
]
)
=
explode
(
'@'
,
$_aryEmail
[
'addr'
]);
list
(
$_aryEmail
[
'user'
],
$_aryEmail
[
'host'
]
)
=
explode
(
'@'
,
$_aryEmail
[
'addr'
]);
// Put the brackets back around the address
// Put the brackets back around the address
$_aryEmail
[
'addr'
]
=
'<'
.
$_aryEmail
[
'addr'
]
.
'>'
;
$_aryEmail
[
'addr'
]
=
'<'
.
$_aryEmail
[
'addr'
]
.
'>'
;
...
@@ -1076,7 +1105,7 @@ class SMTPs
...
@@ -1076,7 +1105,7 @@ class SMTPs
*/
*/
function
getHeader
()
function
getHeader
()
{
{
$_header
=
'From: '
.
$this
->
getFrom
(
'org'
)
.
"
\r\n
"
$_header
=
'From: '
.
$this
->
getFrom
(
'org'
)
.
"
\r\n
"
.
'To: '
.
$this
->
getTO
()
.
"
\r\n
"
;
.
'To: '
.
$this
->
getTO
()
.
"
\r\n
"
;
if
(
$this
->
getCC
()
)
if
(
$this
->
getCC
()
)
...
@@ -1119,10 +1148,11 @@ class SMTPs
...
@@ -1119,10 +1148,11 @@ class SMTPs
/**
/**
* Message Content
* Message Content
*
*
* @param string $_msgContent Message Content
* @param string $strContent Message Content
* @return void
* @param string $strType Type
* @return void
*/
*/
function
setBodyContent
(
$strContent
,
$strType
=
'plain'
)
function
setBodyContent
(
$strContent
,
$strType
=
'plain'
)
{
{
//if ( $strContent )
//if ( $strContent )
//{
//{
...
@@ -1132,7 +1162,7 @@ class SMTPs
...
@@ -1132,7 +1162,7 @@ class SMTPs
$strMimeType
=
'text/plain'
;
$strMimeType
=
'text/plain'
;
// Make RFC821 Compliant, replace bare linefeeds
// Make RFC821 Compliant, replace bare linefeeds
$strContent
=
preg_replace
(
"/(?<!
\r
)
\n
/si"
,
"
\r\n
"
,
$strContent
);
$strContent
=
preg_replace
(
"/(?<!
\r
)
\n
/si"
,
"
\r\n
"
,
$strContent
);
$strContent
=
rtrim
(
wordwrap
(
$strContent
));
$strContent
=
rtrim
(
wordwrap
(
$strContent
));
...
@@ -1157,10 +1187,10 @@ class SMTPs
...
@@ -1157,10 +1187,10 @@ class SMTPs
$this
->
_setBoundary
();
$this
->
_setBoundary
();
// What type[s] of content do we have
// What type[s] of content do we have
$_types
=
array_keys
(
$this
->
_msgContent
);
$_types
=
array_keys
(
$this
->
_msgContent
);
// How many content types do we have
// How many content types do we have
$keyCount
=
count
(
$_types
);
$keyCount
=
count
(
$_types
);
// If we have ZERO, we have a problem
// If we have ZERO, we have a problem
if
(
$keyCount
===
0
)
if
(
$keyCount
===
0
)
...
@@ -1199,7 +1229,7 @@ class SMTPs
...
@@ -1199,7 +1229,7 @@ class SMTPs
// . "\r\n"
// . "\r\n"
// . 'This is a multi-part message in MIME format.' . "\r\n";
// . 'This is a multi-part message in MIME format.' . "\r\n";
$content
.
=
"Content-Transfer-Encoding: 8bit
"
.
"
\r\n
"
;
$content
.
=
"Content-Transfer-Encoding: 8bit
\r\n
"
;
$content
.
=
"
\r\n
"
;
$content
.
=
"
\r\n
"
;
// Loop through message content array
// Loop through message content array
...
@@ -1219,9 +1249,7 @@ class SMTPs
...
@@ -1219,9 +1249,7 @@ class SMTPs
if
(
$this
->
getMD5flag
()
)
if
(
$this
->
getMD5flag
()
)
$content
.
=
'Content-MD5: '
.
$_data
[
'md5'
]
.
"
\r\n
"
;
$content
.
=
'Content-MD5: '
.
$_data
[
'md5'
]
.
"
\r\n
"
;
$content
.
=
"
\r\n
"
$content
.
=
"
\r\n
"
.
$_data
[
'data'
]
.
"
\r\n\r\n
"
;
.
$_data
[
'data'
]
.
"
\r\n
"
.
"
\r\n
"
;
}
}
}
}
// DOL_CHANGE LDR
// DOL_CHANGE LDR
...
@@ -1262,9 +1290,7 @@ class SMTPs
...
@@ -1262,9 +1290,7 @@ class SMTPs
if
(
$this
->
getMD5flag
()
)
if
(
$this
->
getMD5flag
()
)
$content
.
=
'Content-MD5: '
.
$_content
[
'md5'
]
.
"
\r\n
"
;
$content
.
=
'Content-MD5: '
.
$_content
[
'md5'
]
.
"
\r\n
"
;
$content
.
=
"
\r\n
"
$content
.
=
"
\r\n
"
.
$_content
[
'data'
]
.
"
\r\n\r\n
"
;
.
$_content
[
'data'
]
.
"
\r\n
"
.
"
\r\n
"
;
}
}
}
}
...
@@ -1342,7 +1368,7 @@ class SMTPs
...
@@ -1342,7 +1368,7 @@ class SMTPs
*/
*/
function
setSensitivity
(
$_value
=
0
)
function
setSensitivity
(
$_value
=
0
)
{
{
if
(
(
is_numeric
(
$_value
)
)
&&
if
(
(
is_numeric
(
$_value
)
)
&&
(
(
$_value
>=
0
)
&&
(
$_value
<=
3
)
)
)
(
(
$_value
>=
0
)
&&
(
$_value
<=
3
)
)
)
$this
->
_msgSensitivity
=
$_value
;
$this
->
_msgSensitivity
=
$_value
;
}
}
...
@@ -1355,7 +1381,6 @@ class SMTPs
...
@@ -1355,7 +1381,6 @@ class SMTPs
* - [2] Private
* - [2] Private
* - [3] Company Confidential
* - [3] Company Confidential
*
*
* @param string Message Sensitivity
* @return void
* @return void
*/
*/
function
getSensitivity
()
function
getSensitivity
()
...
@@ -1378,7 +1403,7 @@ class SMTPs
...
@@ -1378,7 +1403,7 @@ class SMTPs
*/
*/
function
setPriority
(
$_value
=
3
)
function
setPriority
(
$_value
=
3
)
{
{
if
(
(
is_numeric
(
$_value
)
)
&&
if
(
(
is_numeric
(
$_value
)
)
&&
(
(
$_value
>=
0
)
&&
(
$_value
<=
5
)
)
)
(
(
$_value
>=
0
)
&&
(
$_value
<=
5
)
)
)
$this
->
_msgPriority
=
$_value
;
$this
->
_msgPriority
=
$_value
;
}
}
...
@@ -1471,8 +1496,9 @@ class SMTPs
...
@@ -1471,8 +1496,9 @@ class SMTPs
* This function has been modified as provided by SirSir to allow multiline responses when
* This function has been modified as provided by SirSir to allow multiline responses when
* using SMTP Extensions
* using SMTP Extensions
*
*
* @param $socket
* @param Handler $socket Socket handler
* @param $response
* @param string $response Response
* @return boolean True or false
*/
*/
function
server_parse
(
$socket
,
$response
)
function
server_parse
(
$socket
,
$response
)
{
{
...
@@ -1502,7 +1528,15 @@ class SMTPs
...
@@ -1502,7 +1528,15 @@ class SMTPs
return
$_retVal
;
return
$_retVal
;
}
}
function
socket_send_str
(
$_strSend
,
$_returnCode
=
null
,
$CRLF
=
"
\r\n
"
)
/**
* Send str
*
* @param string $_strSend String to send
* @param string $_returnCode Return code
* @param string $CRLF CRLF
* @return boolean True or false
*/
function
socket_send_str
(
$_strSend
,
$_returnCode
=
null
,
$CRLF
=
"
\r\n
"
)
{
{
if
(
$this
->
_debug
)
$this
->
log
.
=
$_strSend
;
// DOL_CHANGE LDR for log
if
(
$this
->
_debug
)
$this
->
log
.
=
$_strSend
;
// DOL_CHANGE LDR for log
fputs
(
$this
->
socket
,
$_strSend
.
$CRLF
);
fputs
(
$this
->
socket
,
$_strSend
.
$CRLF
);
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment