on makeDate(y, mo, d, h, mi, s)
(*
Make new date object given, year, month, day, hour, minute and
second as integers (month can also be given as a constant). Doesn't
use date strings, so isn't affected by users' Date & Time
preferences (i.e. localisation-independent).
*)
set dt to date (get "1")
set monthNames to {January, February, March, April, May, June,
July, August, September, October, November, December}
if mo is not in monthNames then set mo to item mo of monthNames
set {dt's year, dt's month, dt's day} to {y, mo, d}
set dt's time to h * hours + mi * minutes + s
return dt
end makeDate
set myYear to 2005
set {laSource, laDestination} to {"zzz", "xyz"}
set startDate to makeDate(myYear, 1, 1, 0, 0, 0)
set endDate to makeDate(myYear + 1, 1, 1, 0, 0, 0)
tell application "Mail"
move (every message of mailbox laSource whose date received ≥
startDate and date received < endDate) to mailbox laDestination
end tell
Thanks, this one is really faster.
Here is a simple variant:
set myYear to 2005
set {laSource, laDestination} to {"zzz", "xyz"}
set avant1 to current date
set startDate to date ("01/01/" & myYear)
set endDate to date ("01/01/" & (myYear + 1))
tell application "Mail"
move (every message of mailbox laSource whose date received ≥
startDate and date received < endDate) to mailbox laDestination
end tell
set avant2 to current date