Αποστολή pdf με email

59 views
Skip to first unread message

Φώτης

unread,
Nov 18, 2025, 4:48:54 PMNov 18
to Softone Developers Network
Καλησπέρα,
Θέλω να μπορώ να αποστέλλεται email πατώντας ένα κουμπί από ένα παραστατικό, με επισυναπτόμενο ένα local αρχείο pdf.
Προσπάθησα να στείλω ένα απλό mail με το SysRequest.doSendMail3 ( 
X.EXEC('CODE:SysRequest.doSendMail3', strTO, strCC, strBCC, strSubject, strBodyPlain,
strBodyHTML, strAttachment, strFromName, vEmailAccount);  ) με το παράδειγμα από το blackbook (σελ.443) όμως παρόττι εκτελείται χωρίς σφάλματα, το mail δεν φτάνει ποτέ.


Βαγγέλης Κοτσιφάκης

unread,
Nov 18, 2025, 5:04:18 PMNov 18
to Softone Developers Network
Καλησπέρα Φώτη,

Δοκίμασε να βάλεις το email account σε έναν χρήστη και αν δεις εαν το email αποστέλεται με επιτυχία...πάντως τωρα που το λες εγω δοκίμασα και έβαλα 2 φορες το email account στην παράμετρο και έπαιξε κανονικα.

X.EXEC("CODE:SysRequest.doSendMail3", strTo, strCC, strBCC,strsubject, strBodyplain, strBodyHtml, strAttachment, strFromName, vEmailAccount,vEmailAccount);

Φώτης

unread,
Nov 19, 2025, 2:04:08 AMNov 19
to Softone Developers Network
Το email που χρησιμοποίησα σίγουρα λειτουργεί γιατι έρχονται αυτοματοποιημένα email καθημερινά από αυτόν τον λογαριασμό, βέβαια μέσω jobs του Microsoft SQL Server Manager, όχι μέσω s1. Τι ακριβώς εννοείς να βάλω το email σε έναν χρήστη;

Φώτης

unread,
Nov 24, 2025, 5:55:11 AM (11 days ago) Nov 24
to Softone Developers Network
Τελικά το έλυσα με διαφορετικό τρόπο. Έφτιαξα συνάρτηση όπου φτιάχνει ένα job στον server για να κάνει schedule την αποστολή ενός email. Με αυτόν το τρόπο μπορώ:
- Να προγραμματίσω την αποστολή όποτε θέλω και το job Μπαίνει στον server όπου μπορώ να το κάνω και ακύρωση αν θέλω.
- Στέλνω το αρχείο μου το οποίο βρίσκεται στον server και όχι τοπικά σε κάποιον χρήστη.

Το μόνο πρόβλημα που αντιμετώπισα είναι ότι αν το αρχείο ήταν μεγαλύτερο από 2-3 MB δεν έστελνε καν το email, αλλά δεν το προσπάθησα πολύ να δω τι φταίει ακριβώς.
Για την ιστορία, αυτό είναι script μου:

var   activeStartDate = '20250826;        //Format: YYYMMDD
var   activeStartTime = '160304';  //Format: HHmmss
var  dbName = 'ONOMA_TIS_VASIS';
var mailBody = 'Περιεχόμενο του emai, με υποστήριξη HTML';
var emailTo = 'emailApodekti';
var  mailSubject = '΄Θέμα email'
var uuid = 'monadiko string';  //Αυτό είναι για να μην υπάρξει conflict στα ονόματα των job. Ένα απλό   new Date().getTime() + '_' + Math.floor(Math.random() *100000)   αρκεί (το RNG είναι απλά για έξτρα σιγουριά). 
var emailProfileName = 'na...@company.com';
var  attachment = "c\:my_file.pdf";       //Αρχείο στον server


var sqlQuery =      "DECLARE @jobId BINARY(16); " +
"EXEC msdb.dbo.sp_add_job " +
"@job_name = N'" + uuid + "', " +
"@enabled = 1, " +
"@delete_level = 3; " +                                //Διαγράφει το job αφού εκτελεστεί

"EXEC msdb.dbo.sp_add_jobstep " +
"@job_name = N'" + uuid + "', " +
"@step_name = N'Send Email', " +
"@subsystem = N'TSQL', " +
"@command = N'EXEC msdb.dbo.sp_send_dbmail " +
"@profile_name = ''" +  emailProfileName  + "'', " +
"@recipients = ''" + emailTo + "'', " +
"@subject = ''" +  mailSubject + "'', " +
"@body = ''" +  mailBody + "'', " +
"@body_format = ''HTML'', " +
"@file_attachments = ''" + attachment + "''', " +
"@database_name = N'" + dbName + "', " +
"@on_success_action = 1; " +

"EXEC msdb.dbo.sp_add_jobschedule " +
"@job_name = N'" + uuid + "', " +
"@name = N'RunOnce', " +
"@freq_type = 1, " +
"@active_start_date = " + activeStartDate + ", " +
"@active_start_time = " + activeStartTime + "; " +

"EXEC msdb.dbo.sp_add_jobserver " +
"@job_name = N'" + uuid + "'"


try{
          var re = X.RUNSQL(sqlQuery);
}
catch(err){}
Reply all
Reply to author
Forward
0 new messages