Avatar billede henrik_m Nybegynder
06. juli 2012 - 14:39 Der er 6 kommentarer

Jmail - Sende til xx antal bcc af gangen - Too many recipients

Hej eksperter,

jeg vil gerne sende en mail ud til min mailliste og min kode virker - Sådan da - De først 100 får en e-mail mens jeg får en fejlmeddelelse for resten: 552 5.5.3 Too many recipients.
Så vidt jeg har fundet frem til så er det smtp serveren der svarer fejlmeddelelsen tilbage - Der er en begrænsning på 100 for hver e-mail.
Jeg skal sende til ca. 160.

Er der nogen der kan hjælpe mig med at få mit script til at sende f.eks 50 eller 90 af gangen?


Min kode ser sådan ud (jeg har fjernet XX):
<%
  set msg = Server.CreateOBject( "JMail.Message" )
  Set upload = Server.CreateObject( "w3.Upload" )
  msg.Logging = True
  msg.Silent = True
  Server.ScriptTimeout = 600

  'Check for attachments and add them to the email
  set attachment = upload.Form( "attachment" )
  if attachment.IsFile then
  msg.AddCustomAttachment attachment.filename, attachment.item, false
  end if


  msg.from        = upload.form("fra")
  msg.Subject      = upload.form("emne")
  'JMail.Subject      = "" & request.form("emne") & ""
  msg.AddRecipient  "XX"

response.expires = 0
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Application("XX")
SQLstmt = "SELECT * FROM XX;"
Conn.Execute (SQLstmt)
Set rs = conn.Execute(SQLstmt)
DO WHILE NOT rs.EOF
msg.AddRecipientBCC rs("email")
rs.MoveNext
LOOP

  msg.Priority      = 3
  msg.AddHeader    "Originating-IP", Request.ServerVariables("REMOTE_ADDR")


  ' ********** Her starter selve email-en
  msg.Body = upload.form("besked")
  ' ********** Her slutter selve email-en

  ' To capture any errors which might occur, we wrap the call in an IF statement
if not msg.Send( "XX" ) then
    Response.Write "ERROR MESSAGE: " & msg.ErrorMessage & "<br/>" & vbCrLf
    Response.Write "ERROR SOURCE: " & msg.ErrorSource & "<br/>" & vbCrLf
    Response.Write "LOG: <pre>" & msg.Log & "</pre>" & vbCrLf
'  Response.write "<pre>" & msg.log & "</pre>"
else
  Response.write "Message sent succesfully!"
end if
  Set msg = Nothing
RS.Close
conn.Close
Set conn = nothing
Set SQLstmt = nothing
%>
Avatar billede olebole Juniormester
06. juli 2012 - 15:58 #1
<ole>

Det er ikke særlig effektivt at sende mange mails på den måde. Tilbyder din udbyder ikke en dedikeret mailserver?

/mvh
</bole>
Avatar billede henrik_m Nybegynder
07. juli 2012 - 18:02 #2
Jeg er ikke klar over om min udbyder tilbyder en dedikeret mailserver og hvad en sådan koster.

Jeg havde håbet at ovennævnte udfordring kunne løses forholdsvis enkelt så jeg kunde sende dem over 2 eller 5 gange.
Avatar billede olebole Juniormester
07. juli 2012 - 19:09 #3
Normalt er man tilknyttet en server, som netop er beregnet til mail-lister. Det tilbyder de fleste.

Kan du ikke bare køre scriptet to gange? Først med:

SQLstmt = "SELECT * FROM XX LIMIT 1,100;"

- og derefter med:

SQLstmt = "SELECT * FROM XX LIMIT 101,1000;"
Avatar billede henrik_m Nybegynder
07. juli 2012 - 22:27 #4
Det kunne godt være en løsning - mener du at man faktisk kan køre den samme kode som vis ovenfor 2 gange nedenunder hinanden i samme ASP fil. Så jeg på den måde slipper for at redir til en ny side.

Det kan jo så gøres under forudsætning af at det ikke kommer over 200 på maillisten - Så¨skal den ikke køres 2 gang under hinanden men 3...osv.

Er det rigtig forstået?

Havde dog håbet at man kunne lave det automatiseret med et loop rundt om hele ovennævnte kode.

Kan man få vist en status om hvem der er sendt til løbende i jmail?
Avatar billede mireigi Novice
26. juli 2012 - 15:49 #5
<%
  set msg = Server.CreateOBject( "JMail.Message" )
  Set upload = Server.CreateObject( "w3.Upload" )
  msg.Logging = True
  msg.Silent = True
  Server.ScriptTimeout = 600

  'Check for attachments and add them to the email
  set attachment = upload.Form( "attachment" )
  if attachment.IsFile then
    msg.AddCustomAttachment attachment.filename, attachment.item, false
  end if

  msg.from        = upload.form("fra")
  msg.Subject      = upload.form("emne")
  'JMail.Subject      = "" & request.form("emne") & ""
  msg.AddRecipient  "XX"
  msg.Priority      = 3
  msg.AddHeader    "Originating-IP", Request.ServerVariables("REMOTE_ADDR")


  ' ********** Her starter selve email-en
  msg.Body = upload.form("besked")
  ' ********** Her slutter selve email-en

response.expires = 0
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Application("XX")
SQLstmt = "SELECT * FROM XX;"
Conn.Execute (SQLstmt)
Set rs = conn.Execute(SQLstmt)
intBCCCount = 0
DO WHILE NOT rs.EOF
  msg.AddRecipientBCC rs("email")
  intBCCCount = intBCCCount + 1

  If intBCCCount = 50 Then
    Call SendMail(msg)
    intBCCCount = 0
    msg.ClearBCC  ' Kan ikke huske hvad den hedder
  End If
rs.MoveNext
LOOP

If intBCCCount > 0 Then
  Call SendMail(msg)
End If

Set msg = Nothing
RS.Close
conn.Close
Set conn = nothing
Set SQLstmt = nothing


Function SendMail(msg)
  ' To capture any errors which might occur, we wrap the call in an IF statement
  if not msg.Send( "XX" ) then
    Response.Write "ERROR MESSAGE: " & msg.ErrorMessage & "<br/>" & vbCrLf
    Response.Write "ERROR SOURCE: " & msg.ErrorSource & "<br/>" & vbCrLf
    Response.Write "LOG: <pre>" & msg.Log & "</pre>" & vbCrLf
    '  Response.write "<pre>" & msg.log & "</pre>"
  else
    Response.write "Message sent succesfully!"
  end if
End Function
%>
Avatar billede bobbedude Nybegynder
18. september 2012 - 11:33 #6
Ved ikke om det hjælper men ASPEmail har en funktion der hedder SendToQueue og med den kan man sagtens sende tusindvis af mails ud men det kræver selvfølig at det er installeret på webserveren
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester